2016-05-17 109 views
0

我想获得存储在ES中的布尔查询,使用Percolate API。下面弹性搜索渗透布尔查询

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" 
    } 
}' 

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

回答

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" 
     } 
    } 
}'