0

私は ElasticSearch に (非常に) 慣れていないので、ばかげている可能性のある質問をお許しください。現在、MySQL を使用して全文検索を実行していますが、これを ElasticSearch に移行したいと考えています。現在、私のテーブルには 3 つの列にまたがるフルテキスト インデックスがあります。

title,description,tags

したがって、ES では、各ドキュメントにtitledescriptionおよびtagsフィールドがあり、一般的なフレーズの全文検索を実行したり、特定のタグでフィルター処理したりできます。

usernameまた、 (特定のユーザーによる投稿を取得できるように)などの検索可能なフィールドをさらに追加したいと考えています。では、全文検索がtitleOR descriptionORに一致し、 に一致しないように指定するにはどうすればよいでしょうか?tagsusername

OR フィルターの例から、次のようなものを使用する必要があると思います。

{
    "filtered" : {
        "query" : {
           "match_all" : {}
        },
        "filter" : {
            "or" : [
                {
                    "term" : { "title" : "foobar" }
                },
                {
                    "term" : { "description" : "foobar" }
                },
                {
                    "term" : { "tags" : "foobar" }
                }
            ]
        }
    }
}

この新しいことに来て、これは非常に効率的ではないようです。usernameこれを行うためのより良い方法はありますか、またはフィールドを別のインデックスに移動する必要がありますか?

4

1 に答える 1

0

これで問題ありません。一般的に、ElasticSearch のマッピング タイプとオプションに慣れることをお勧めします。 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping.html

于 2013-10-30T08:44:13.520 に答える