1

ユーザーの検索内容に基づいてオートコンプリートを追加しようとしています。
現在、次のマッピングがあります。

{
  "courts_2": {
    "mappings": {
      "properties": {
        "author": {
          "type": "text",
          "analyzer": "my_analyzer"
        },
        "bench": {
          "type": "text",
          "analyzer": "my_analyzer"
        },
        "citation": {
          "type": "text"
        },
        "content": {
          "type": "text",
          "fields": {
            "standard": {
              "type": "text"
            }
          },
          "analyzer": "my_analyzer"
        },
        "court": {
          "type": "text"
        },
        "date": {
          "type": "text"
        },
        "id_": {
          "type": "text"
        },
        "title": {
          "type": "text",
          "fields": {
            "standard": {
              "type": "text"
            }
          },
          "analyzer": "my_analyzer"
        },
        "verdict": {
          "type": "text"
        }
      }
    }
  }
}

以下は、設定に使用したコードです。

{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_analyzer": {
            "tokenizer": "standard",
            "filter": [
              "lowercase",
              "my_metaphone"
            ]
          }
        },
        "filter": {
          "my_metaphone": {
            "type": "phonetic",
            "encoder": "metaphone",
            "replace": true
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "author": {
        "type": "text",
        "analyzer": "my_analyzer"
      },
      "bench": {
        "type": "text",
        "analyzer": "my_analyzer"
      },
      "citation": {
        "type": "text"
      },
      "court": {
        "type": "text"
      },
      "date": {
        "type": "text"
      },
      "id_": {
        "type": "text"
      },
      "verdict": {
        "type": "text"
      },
      "title": {
        "type": "text",
        "analyzer": "my_analyzer",
        "fields": {
          "standard": {
            "type": "text"
          }
        }
      },
      "content": {
        "type": "text",
        "analyzer": "my_analyzer",
        "fields": {
          "standard": {
            "type": "text"
          }
        }
      }
    }
  }
}

実装したいことは次のとおりです。エンドポイントに対して行われたすべてのクエリを収集して保存し、その上でオートコンプリートを使用したいと思います。たとえば、これまでにすべてのユーザーが次のクエリを作成しました -

Real Madrid v/s Barcelona 
Real Madrid Team 
Real Madrid Coach 
Barcelona v/s Man City 
Sevilla Home Ground
Man Utd. recent results

誰かが検索するReaと、次のオートコンプリート クエリが提案されます。

Real Madrid v/s Barcelona 
Real Madrid Team 
Real Madrid Coach 

これは、単一のユーザーではなく、日付までにすべてのユーザーによって行われた検索に基づいています。さらに、たとえば過去 1 か月間に行われた上位のクエリは何かを分析したいと思います。

AWS Elasticsearch サービスで ElasticSearch バージョン 7.1 を使用しています。

編集:私のニーズが少し進化したため、最初の質問からかなり逸脱しました。ご迷惑をおかけしましたことをお詫び申し上げます。

4

0 に答える 0