Runtime Field脚本:如何让long类型字段无值时输出null而非0
解决方案
修改后的Runtime Field映射脚本如下:
PUT /my-logs-dev/_mapping { "runtime": { "fields.Metric.ElapsedSeconds": { "type": "long", "script": { "source": "if(doc['fields.Metric.ElapsedMilliseconds'].length>0) { emit(Math.round(doc['fields.Metric.ElapsedMilliseconds'].value / 1000d)); }" } } } }
修改说明
- 移除原脚本中
else分支的emit(0)操作。当fields.Metric.ElapsedMilliseconds字段无值时,脚本不会调用emit()方法,此时该Runtime Field会自动返回null。 - 这样设置后,仪表板等场景的聚合操作会直接忽略无值的文档,避免用0稀释聚合结果。
内容的提问来源于stack exchange,提问作者Ernie S
相关产品推荐
相关产品推荐

