Elasticsearch QueryStrings:部分匹配NOT查询?

时间:2016-10-18 05:12:31

标签: javascript elasticsearch

我正在创建一个将使用布尔运算符(as described here)的搜索字段,我希望它们的行为与我的普通(非布尔运算符)查询相同,这些查询与部分字符串匹配{ {1}}。为了说明:搜索prefix_match,获取firfire pitfire ball等结果。但是,如果我然后搜索firm,它仍会返回fire -b,我认为是错的;我必须搜索fire ball以排除fire -ball。有没有办法改变这种行为?

作为参考,这是当前发送到ES服务器的查询:

fire ball

1 个答案:

答案 0 :(得分:3)

Query String查询允许使用通配符。我相信你应该删除多匹配。我相信会弄乱你的结果,只需在每个术语的末尾添加一个通配符,如下所示。如果你想要一些完全匹配,只是不要添加通配符。此外,此查询支持fuzziness,默认设置为AUTO,这可能会使您的结果陷入混乱。如果要禁用它,只需将其设置为零。

{
  "query": {
    "bool": {
      "should": [
        {
          "queryString": {
            "fields": [
              "name"
            ],
            "query": "fire* -b*",
            "defaultOperator": "OR"
          }
        }
      ]
    }
  }
}