gpt4 book ai didi

elasticsearch - 在Elasticsearch数组中找到任何不等于X的值

转载 作者:行者123 更新时间:2023-12-03 02:19:56 25 4
gpt4 key购买 nike

我想建立一个查询,该查询与在不等于给定值的多值字段中具有任何值的任何文档匹配。
索引一些文件

POST /example/type
{"array": ["a", "b", "c"]} <--- 1
{"array": ["d", "e", "x"]} <--- 2
{"array": ["x"]} <--- 3
我想建立一个查询,说“匹配具有不等于x的数组中任何值的任何文档。在上面的示例中将匹配(1)和(2),因为这两个文档都包含至少一个非“x”由于文档(3)仅包含“x”,因此将被拒绝。
我已经尝试过 bool(boolean) bool(boolean) 值must_not并查询DSL NOT(!)运算符,但是它们以排除原理工作,而不是逻辑否定的相等性,因此仅返回文档(1)。
我应该补充一点,性能在这里至关重要,因此基于脚本的解决方案可能无法正常工作。

最佳答案

Lucene索引(基于ElasticSearch的构建)没有数组中值的原始顺序的概念。此外,对象数组无法按预期工作:无法独立于数组中的其他对象查询每个对象。

我相信基于脚本的解决方案是唯一的方法
或者,在索引文档时,您可以添加其他参数“length”

PUT my_test
{
"mappings": {
"properties": {
"array": {
"type": "keyword"
},
"count":{
"type": "integer"
}
}
}
}
现在搜索 而不是(计数== 1,且数组包含a)的文档
GET /my_test/_search
{
"query": {
"bool": {
"must_not": [
{
"term": {
"count": 1
}
},
{
"term": {
"array": "x"
}
}
]
}
}
}

关于elasticsearch - 在Elasticsearch数组中找到任何不等于X的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62659414/

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