我正在使用带有无痛语言的 map/reduce 功能来进行一些聚合。
在map_script部分中,我试图过滤掉所有将某个字段设置为null的文档,但我无法这样做。
我已经尝试过containsKey()
,但是即使我查看了基础数据并且绝大多数文档都将此字段设置为null!= null
,但对于每个文档,表达式的计算结果都为true。
我无法解释这一点,但是当我汇总它时,几乎每个文档的该字段的值都被视为 0,而不是 null。但事实并非如此,因为当我查询这个字段时,我看到一堆空值。
{
"aggs": {
"my_agg_name": {
"scripted_metric": {
"combine_script": "... combine script ...",
"map_script": "if (doc.containsKey(\"my_field\") && doc.my_field.value != null) { ... } }",
"init_script": "... init script ...",
"reduce_script": "... reduce script ..."
}
}
},
"size": 0
}
有谁知道发生了什么?如何使用无痛过滤掉 map/reduce 聚合中的空值?