我正在使用query_string和标准分析器
我有数据: -
{ "foo":"John Smith" }
{ "foo":"Smith John" }
{ "foo":"John Smith Hi How U" }
{ "foo":"Beacon" }
{ "foo":"Demo hei Device" }
但是当我在query_string中使用这个查询时: -
{
"query": {
"query_string": {
"query": "foo:John a"
}
}
}
预期结果应为: -
{ "foo":"John Smith" }
{ "foo":"Smith John" }
{ "foo":"John Smith Hi How U" }
实际回复: -
{ "foo":"John Smith" }
{ "foo":"Smith John" }
{ "foo":"John Smith Hi How U" }
{ "foo":"Beacon" }
{ "foo":"Demo hei Device" }
有人可以说,这个额外的结果数据(“foo”:“Beacon”),{“foo”:“Demo hei Device”}即将来临?
我认为,query_string考虑三个令牌: -
1)约翰
2)一个
3)(空间)
请问我怎样才能使query_string只考虑两个令牌 1)约翰2)a
实际上有一段时间它不会将Space视为第三个标记!
答案 0 :(得分:0)
正确查询预期数据: -
{
"query": {
"query_string": {
"query": "foo:(John a)"
}
}
}
答案 1 :(得分:0)
使用以下查询
{
"query": {
"query_string" : {
"default_field" : "foo",
"query" : "John a",
"default_operator" :"or"
}
}
}
此查询返回文档,其中包含“john”或“a”。 如果您想要两个令牌都需要文档,请将default_operator替换为AND