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

回到顶部