elasticsearch通过作为数组的字段的大小过滤
我该如何过滤具有一个数组的字段并且具有超过N个元素的文档?
如何过滤具有为空数组的字段的文档?
是解决方案吗?如果是这样,怎么办?
回答:
我来看看脚本过滤器。以下过滤器应仅返回在fieldname
字段中具有至少10个元素的文档,该文档是一个数组。请记住,这可能很昂贵,具体取决于索引中有多少个文档。
"filter" : { "script" : {
"script" : "doc['fieldname'].values.length > 10"
}
}
关于第二个问题:那里真的有一个空数组吗?还是仅仅是一个没有值的数组字段?您可以使用缺少的过滤器来获取对特定字段没有价值的文档:
"filter" : { "missing" : { "field" : "user" }
}
否则,我想您需要再次使用脚本,类似于我上面建议的脚本,只是输入的长度不同。如果长度是恒定的,我将其放在该params
部分中,以便脚本将由elasticsearch缓存并重新使用,因为它始终是相同的:
"filter" : { "script" : {
"script" : "doc['fieldname'].values.length > param1"
"params" : {
"param1" : 10
}
}
}
以上是 elasticsearch通过作为数组的字段的大小过滤 的全部内容, 来源链接: utcz.com/qa/421191.html