gpt4 book ai didi

Elasticsearch - "OR"使用匹配查询和术语查询的查询条件

转载 作者:行者123 更新时间:2023-12-02 23:01:00 25 4
gpt4 key购买 nike

我有以下 匹配 请求参数:

curl -XGET 'my-es.com/my_indice/_search?pretty' -d '{
"size" : 10,
"query" : {
"bool" : {
"must" : [ {
"match" : {
"state" : {
"query" : ["ACTIVE", "INACTIVE"],
"type" : "boolean"
}
}
}]
}
}
}'

我猜这意味着 "state" = "ACTIVE" or "state" = "INACTIVE" ,但实际上它执行 "state" = "INACTIVE" .

然后我尝试了 期限 请求参数:
curl -XGET 'my-es.com/my_indice/_search?pretty' -d '{
"size" : 10,
"query" : {
"bool" : {
"must" : [{
"terms" : { "state" : ["ACTIVE", "INACTIVE"] }
}]
}
}
}'

它执行 "state" = "ACTIVE" or "state" = "INACTIVE" , 显示 期限 查询通过数组支持多个 OR 条件。

我很好奇为什么 匹配 查询不支持 通过数组条件?它没有显示任何语法错误。

最佳答案

match查询仅支持指定单个字符串值。 official match documentation 中没有明确规定,但如果您愿意阅读 MatchQueryParser.java 的一些源代码,您可以在解析 query 时看到字段,解析器将跳过分隔数组开始和结束的标记并始终覆盖 value最新的一个被解析,因此为什么你会看到你所看到的,即 state将与 INACTIVE 匹配只要。

但是,您可以做的是将两个 token 放在同一个字符串中,如下所示,两个 token 都将被考虑在内:

curl -XGET 'my-es.com/my_indice/_search?pretty' -d '{
"size" : 10,
"query" : {
"bool" : {
"must" : [ {
"match" : {
"state" : {
"query" : "ACTIVE INACTIVE",
"type" : "boolean"
}
}
}]
}
}
}'

关于Elasticsearch - "OR"使用匹配查询和术语查询的查询条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34501339/

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