私は ElasticSearch に (非常に) 慣れていないので、ばかげている可能性のある質問をお許しください。現在、MySQL を使用して全文検索を実行していますが、これを ElasticSearch に移行したいと考えています。現在、私のテーブルには 3 つの列にまたがるフルテキスト インデックスがあります。
title,description,tags
したがって、ES では、各ドキュメントにtitle
、description
およびtags
フィールドがあり、一般的なフレーズの全文検索を実行したり、特定のタグでフィルター処理したりできます。
username
また、 (特定のユーザーによる投稿を取得できるように)などの検索可能なフィールドをさらに追加したいと考えています。では、全文検索がtitle
OR description
ORに一致し、 に一致しないように指定するにはどうすればよいでしょうか?tags
username
OR フィルターの例から、次のようなものを使用する必要があると思います。
{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"or" : [
{
"term" : { "title" : "foobar" }
},
{
"term" : { "description" : "foobar" }
},
{
"term" : { "tags" : "foobar" }
}
]
}
}
}
この新しいことに来て、これは非常に効率的ではないようです。username
これを行うためのより良い方法はありますか、またはフィールドを別のインデックスに移動する必要がありますか?