A有一个字符串,让我们说“Ab Cd”
我的文件包含字段: ['a','b','c','d',...'z'](并非所有文件都包含所有字段)
我只想在字段'a','c','f','x'中搜索,但我想返回文档中的所有字段。
如果任何字段'a','c','f','x'包含以'Ab'或'Cd'开头的字符串,则点击成功。
现在我使用它,但它搜索所有字段而不是选定的字段。
{'query': {'query_string': {'query': "Ab* Cd*"}}}
答案 0 :(得分:14)
可以指定默认情况下要搜索的字段列表作为查询的一部分:
{
"query": {
"query_string" : {
"fields" : ["a", "c", "f", "x"],
"query" : "Ab* Cd*"
}
}
}
或者,您可以在每个术语前加上字段名称:
{'query': {'query_string': {'query': "a:Ab* c:Ab* f:Ab* x:Ab* a:Cd* c:Cd* f:Cd* x:Cd*"}}}
检查描述这些和其他有用选项的elasticsearch指南的Query String Query页。
答案 1 :(得分:4)
这正是我想要的。如果有人在寻找这个版本的java版本:
QueryStringQueryBuilder qsqb = new QueryStringQueryBuilder("Ab* Cd*")
.field("a", 2)
.field("b")
.field("c")
.field("f")
.field("x");
如果你想在上面的代码中显示字段“a”,你甚至可以使用字段级别提升。