gpt4 book ai didi

elasticsearch - ElasticSearch:筛选文档,其中数组字段中的任何值都不在列表中

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

我遇到的情况是我的字段包含整数数组。我需要能够实现一个查询,该查询可以过滤出仅包含且该数组中的一组特定值的文档的文档。

例如,假设我创建了以下索引:

PUT /test/stuff/1
{
"foo": [1,2,3]
}

PUT /test/stuff/2
{
"foo": [2]
}

PUT /test/stuff/3
{
"foo": [1,3]
}

现在,我想获取所有文档,其中“foo”包含不在[2,4]中的任何值。我想返回ID为1和3的文档。该文档1确实不包含值 2,但也包含其他值。像这样的简单 must_not将过滤出文档1:
POST /test/stuff/_search
{
"query": {
"bool": {
"must" : {
"match_all": {}
},
"filter" : {
"bool": {
"must_not": [
{
"terms" : {"foo" : [2,4]}
}
]
}
}
}
}
}

上面的查询将仅匹配文档3。是否可以重写此方法以使其也包含文档1?

最佳答案

这可以通过脚本查询来完成,用painless进行说明,如下所示:

{
"query": {
"bool": {
"must" : {
"match_all": {}
},
"filter" : {
"bool": {
"must": {
"script" : {
"script" : {
"inline" : "for(int i: doc['foo']) { boolean matches = true; for(int j: params.param1){if(i==j) matches = false;} if(matches) return true;} ",
"lang" : "painless",
"params" : { "param1": [2,4]}
}
}
}

}
}
}
}
}

关于elasticsearch - ElasticSearch:筛选文档,其中数组字段中的任何值都不在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43238471/

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