web-dev-qa-db-ja.com

複数のフィールドでのElasticsearchフレーズプレフィックスクエリ

私はESを初めて使用し、複数のフィールドにphrase_prefixを使用するクエリを作成しようとしているので、複数回検索する必要はありません。

これが私がこれまでに得たものです:

{ 
    "query" : { 
        "text" : { 
            "first_name" : { 
                "query" : "Gustavo", 
                "type" : "phrase_prefix" 
            }
        } 
    }
}'

「last_name」など、複数のフィールドを検索する方法を知っている人はいますか?

17
Gustavo Matias

使用している テキストクエリ は、 一致クエリ を優先して、しばらく前に非推奨になりました(事実上名前が変更されました)。一致クエリは単一のフィールドをサポートしますが、 multi_match query を使用できます。これは、まったく同じオプションをサポートし、複数のフィールドで検索できるようにします。これがあなたに役立つはずの例です:

{
    "query" : {
        "multi_match" : {
            "fields" : ["title", "subtitle"],
            "query" : "trying out ela",
            "type" : "phrase_prefix"
        }
    }
}

次のようなJava APIを使用して、同じことを実現できます。

QueryBuilders.multiMatchQuery("trying out ela", "title", "subtitle")
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX);
42
javanna