如何自定义Kibana热力图颜色规则,按yhat与yhat_upper大小划分层级
Kibana 热力图按字段对比规则自定义着色实现方法
方案1:新增Kibana运行时字段(无需修改原始索引,推荐)
该方案适配Kibana 7.11及以上版本,不需要改动已存入Elasticsearch的原始数据,直接在索引模式层面新增计算字段即可:
- 打开Kibana左侧菜单「堆栈管理」→「索引模式」,找到你当前使用的对应索引模式进入编辑页
- 切换到「运行时字段」标签页,点击「添加运行时字段」
- 字段名自定义为
yhat_compare_flag,类型选择「整数」,在脚本编辑框输入如下Painless语法代码:
// 对比同一条记录的yhat和yhat_upper值,返回不同标记 if (doc['yhat'].value >= doc['yhat_upper'].value) { emit(1); } else { emit(0); }
- 保存运行时字段后回到热力图编辑页面
- 在右侧配置栏的「颜色映射」模块,选择按新增的
yhat_compare_flag字段进行着色,分别给值为0(yhat < yhat_upper)和值为1(yhat >= yhat_upper)的场景配置你需要的对应颜色即可
如果使用7.11之前的旧版本Kibana,可在索引模式的「脚本字段」入口进行相同配置,逻辑完全一致。
方案2:预计算对比字段(适合大数据量场景)
如果你的索引数据量级较大,使用运行时字段查询存在性能压力,可以在数据写入阶段提前完成计算:
- 在数据推送至Elasticsearch的业务逻辑中新增
yhat_compare_flag字段,写入前判断当前记录的yhat和yhat_upper的大小关系,符合大于等于条件时赋值为1,否则赋值为0 - 存量数据可通过ES的更新查询批量补全该字段
- 后续在热力图配置中直接按该预计算字段配置颜色映射即可
常见问题排查
如果配置后颜色未正常生效,优先检查两个点:
- 确认索引模式中
yhat和yhat_upper两个字段的类型均为数值类型,没有被识别为字符串 - 确认热力图的聚合逻辑没有覆盖掉单条记录的字段值,若聚合粒度大于单条记录,可调整脚本逻辑适配聚合后的计算规则
内容的提问来源于stack exchange,提问作者Sandeepa Kariyawasam
相关产品推荐
相关产品推荐

