一尘不染

ElasticSearch词组前缀查询多个字段

elasticsearch

我是ES的新手,我正在尝试建立一个查询,该查询将对多个字段使用phrase_prefix,因此我不必进行多次搜索。

这是到目前为止我得到的:

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

有人知道如何搜索多个字段,例如“ last_name”吗?


阅读 1428

收藏
2020-06-22

共1个答案

一尘不染

您正在使用的文本查询已被弃用(有效重命名),而改为使用match
query
。匹配查询支持单个字段,但是您可以使用multi_match查询,该查询支持完全相同的选项并允许在多个字段中进行搜索。这是一个对您有帮助的示例:

{
    "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);
2020-06-22