gpt4 book ai didi

elasticsearch - query_string中的AND/OR优先级不正确

转载 作者:行者123 更新时间:2023-12-03 00:16:35 24 4
gpt4 key购买 nike

今天我发现了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"
}
}
}
}

但是,与AND相同的带有括号的查询返回了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 takes precedence over AND, which takes precedence over OR



因此这两个查询 必须返回相同的结果。

是bug还是我错过了什么?

提前致谢!

最佳答案

您提到的查询

"query" : "string:a AND string:b OR string:c AND string:d"

因为所有a,b和d都应存在于 string中,如果c存在,则该文档将被增强。

这就是为什么它要查找在任何文档中都找不到的a,b和d并且不显示结果的原因。

根据规范 here:

AND and OR can affect the terms to the left and right.



您也可以引用 this

关于elasticsearch - query_string中的AND/OR优先级不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35697591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com