今天我发现了elasticsearch 1.5.2
的奇怪行为我正在索引2份文件:
POST http://localhost:9200/index/type {
"string":"a b"
}
POST http://localhost:9200/index/type {
"string" : "c d"
}
以下查询返回没有命中(为什么?):
POST http://localhost:9200/index/type/_search
{
"query" : {
"query_string" : {
"query_string" : {
"query" : "string:a AND string:b OR string:c AND string:d"
}
}
}
}
但是在ANDs上使用括号的相同查询会返回2个文档,如预期的那样:
POST http://localhost:9200/index/type/_search
{
"query" : {
"query_string" : {
"query_string" : {
"query" : "(string:a AND string:b) OR (string:c AND string:d)"
}
}
}
}
根据规范 (https://www.elastic.co/guide/en/elasticsearch/reference/1.5/query-dsl-query-string-query.html)
NOT优先于AND,优先于OR
因此两个查询必须返回相同的结果。
是错误还是我错过了什么?
提前致谢!