ユーザーの検索内容に基づいてオートコンプリートを追加しようとしています。
現在、次のマッピングがあります。
{
"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 を使用しています。
編集:私のニーズが少し進化したため、最初の質問からかなり逸脱しました。ご迷惑をおかけしましたことをお詫び申し上げます。