我正在尝试使用 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 条件。我无法弄清楚为什么它不适用于布尔查询。
答案 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"
}
}
}'