query_string的空间问题

时间:2017-04-07 09:42:29

标签: elasticsearch

我正在使用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视为第三个标记!

2 个答案:

答案 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