弹性搜索Percolate布尔查询

时间:2016-05-17 08:47:28

标签: elasticsearch

我正在尝试使用 Percolate API获取存储在ES中的布尔查询。

索引映射如下所示

curl -XPUT 'localhost:9200/my-index' -d '{
  "mappings": {
    "taggers": {
      "properties": {
        "content": {
          "type": "string"
        }
      }
    }
  }
}'

我正在插入这样的记录(查询包含正确的布尔格式(AND,OR,NOT等),如下例所示)

curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{
        "query" : {
            "match" : {
                "content" : "Audi AND BMW"
            }
        }
}'

然后我发布了一个文档以获得匹配的查询。

curl -XGET 'localhost:9200/my-index/my-type/_percolate' -d '{
    "doc" : {
        "content" : "I like audi very much"
    }
}'

在上述情况下,不应该有记录,因为布尔查询是“奥迪 AND 宝马”,但它仍在给出记录。这意味着它忽略了 AND 条件。我无法弄清楚为什么它不适用于布尔查询。

1 个答案:

答案 0 :(得分:0)

您需要更改此查询,match查询无法理解AND运算符(他们会将其视为普通标记and),但query_string

curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{
    "query" : {
        "query_string" : {
            "query" : "Audi AND BMW",
            "default_field": "content"
        }
    }
}'