多个字段上的Elasticsearch短语前缀查询

时间:2013-07-10 05:23:24

标签: elasticsearch match field

我是ES新手,我正在尝试构建一个查询,它会将phrase_prefix用于多个字段,因此我不必多次搜索。

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

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

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

1 个答案:

答案 0 :(得分:39)

您之前使用的text query已被弃用(有效地重命名),而不是match query。匹配查询支持单个字段,但您可以使用支持相同选项的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);