エラスティック サーチを使用して、次の 2 つのフィールドを含むエンティティのインデックスを作成しています。
1 つのエンティティにインデックスを付けたとします。
{
"agencyName": "Turismo Viajes",
"agencyAddress": "Av. Maipú 500"
}
このエンティティを検索して、agencyName を検索して上記のエンティティを取得できるようにしたいと考えています。異なる検索は次のとおりです。
1) ウリスモ 2) ヴィアヘ 3) ヴィアヘス 4) ツーリスモ 5) ウリス
アイデアは、これらの文字列でクエリを実行すると、常にそのエンティティを取得する必要があるということです (おそらく、精度に応じてスコアが異なります)。
これには nGram がうまくいくと思ったので、phrase というエラスティック search.yml ファイルでグローバル アナライザーを定義しました。
index:
analysis:
analyzer:
phrase:
type: custom
tokenizer: nGram
filter: [nGram, lowercase, asciifolding]
そして、次のようなエージェンシー インデックスを作成しました。
{
"possible_clients" : {
"possible_client" : {
"properties" : {
"agencyName" : {
"type" : "string",
"analyzer" : "phrase"
},
"agencyAddress" : {
"type": "string"
}
}
問題は、次のような呼び出しを行うときです。
curl -XPOST 'http://localhost:9200/possible_clients/possible_client/_search' -d '{
"query": { "term": { "agencyName": "uris" }}
}'
ヒットが出ません。私が間違っていることはありますか?
前もって感謝します。