如何在ElasticSearch中使用OR语句在多个字段中进行搜索

Jir*_*esl 5 elasticsearch

A有一个字符串,让我们说"Ab Cd"

我有以下字段的文档:['a','b','c','d',...'z'](并非所有文档都包含所有字段)

我只想在字段'a','c','f','x'中搜索,但我想返回文档中的所有字段.

如果任何字段'a','c','f','x'包含以'Ab'或'Cd'开头的字符串,则命中成功.

现在我使用它,但它搜索所有字段而不是选定字段.

{'query': {'query_string': {'query': "Ab* Cd*"}}}
Run Code Online (Sandbox Code Playgroud)

imo*_*tov 14

您可以指定默认情况下要搜索的字段列表作为查询的一部分:

{ 
    "query": { 
        "query_string" : {
            "fields" : ["a", "c", "f", "x"],
            "query" : "Ab* Cd*"
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用字段名称为每个术语添加前缀:

{'query': {'query_string': {'query': "a:Ab* c:Ab* f:Ab* x:Ab* a:Cd* c:Cd* f:Cd* x:Cd*"}}}
Run Code Online (Sandbox Code Playgroud)

检查弹性搜索的查询字符串查询页面,该页面描述了这些和其他有用的选项.