Kibana:不同文档字段相减、Scripted Field报错及折线图差值计算求助
问题解决方案
一、Scripted Field报错修复
你遇到的报错绝大多数是Painless脚本未做字段存在性校验、字段类型不匹配导致的,按照以下规则调整脚本即可:
- 脚本必须先判断对应字段是否存在,避免空指针报错,参考脚本如下(将示例字段名替换为你实际的红色、蓝色标记对应字段名即可):
// 红色标记字段取值,不存在时默认返回0 def red_sum = doc.containsKey('你的红色字段名') ? doc['你的红色字段名'].value : 0; // 蓝色标记字段取值,不存在时默认返回0 def blue_sum = doc.containsKey('你的蓝色字段名') ? doc['你的蓝色字段名'].value : 0; return red_sum - blue_sum;
- 注意校验两个字段的类型均为数值型,若字段为字符串类型,需先做类型转换再计算。
- 若你使用的是Kibana 7.11及以上版本,更推荐使用Runtime Field替代Scripted Field,稳定性和查询性能更优。
二、折线图差值展示实现
无需依赖Scripted Field,直接在可视化配置中即可完成差值计算:
- 打开折线图编辑界面,保留你原本配置的绿色线、蓝色线对应的两个指标
- 新增一个指标,选择Bucket Script类型
- 配置变量映射:将绿色线对应指标的变量名设为
green,蓝色线对应指标的变量名设为blue - 在脚本输入框中填写
params.green - params.blue,自定义该指标的展示名称为「数据差值」 - 可根据需要在指标轴配置中选择是否隐藏原有两条线,差值线的颜色可自定义为你需要的配色。
内容的提问来源于stack exchange,提问作者RZ3
相关产品推荐
相关产品推荐

