これはPercolatorにも適しているようです。
別のインデックスでクエリをドキュメントとしてインデックス化し、ドキュメントをパーコレートして、一致するクエリを知ることができます。percolate APIを見てください。
( create index APIを使用して) インデックスを作成する必要があります。たとえば、それを test と呼びましょう。
curl -XPUT localhost:9200/test
次に、名前を付けて「ブエノスアイレス」クエリを登録します。DrTech が回答で示唆しているように、マッチ フレーズ クエリは適切な選択のようです。
curl -XPUT localhost:9200/_percolator/test/buenosaires -d '{
"query" : {
"match_phrase" : {
"text" : "Buenos Aires"
}
}
}'
次にパーコレートします。つまり、ドキュメントを送信すると、以前にインデックスを作成したクエリの中で一致するクエリが返されます。
curl -XGET localhost:9200/test/type1/_percolate -d '{
"doc" : {
"city" : "This is an example of some text written from Buenos Aires about Meat"
}
}'
この場合、次の json を取得する必要があります。buenosaires は、インデックス作成中にクエリに付けた名前です。
{"ok":true, "matches":["buenosaires"]}
DrTechの答えは本当に良いです。主な違いは、テキストが実際にどこにあるかによって生じると思います。Elasticsearch で既にインデックスが作成されている場合、最善の戦略は、名前付きクエリを作成して、1 回のリクエストでドキュメントが一致するものを取得することです。
一方、データにインデックスを付けようとしていて、実際にインデックスを付ける前にドキュメントを強化する必要がある場合は、おそらくパーコレーターの方が適切です。
お役に立てれば!