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

Gus*_*ias 16 field match elasticsearch

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

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

{ 
    "query" : { 
        "text" : { 
            "first_name" : { 
                "query" : "Gustavo", 
                "type" : "phrase_prefix" 
            }
        } 
    }
}'
Run Code Online (Sandbox Code Playgroud)

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

jav*_*nna 41

您之前使用的文本查询已被弃用(有效地重命名),以支持匹配查询.匹配查询支持单个字段,但您可以使用支持相同选项的multi_match查询,并允许搜索多个字段.这是一个应该对您有所帮助的示例:

{
    "query" : {
        "multi_match" : {
            "fields" : ["title", "subtitle"],
            "query" : "trying out ela",
            "type" : "phrase_prefix"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用Java API实现相同的功能:

QueryBuilders.multiMatchQuery("trying out ela", "title", "subtitle")
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,工作得很好!对我来说,使用/添加 `"fields" : [ "*" ], "lenient" : true` 是有意义的,以便搜索**所有**字段,并且当数字字段被搜索时,_text_条目不会导致异常(隐式)包含在字段列表中。 (2认同)