如何在Kibana中可视化histogram类型字段的数值-计数组合为垂直柱状图
当然可行!我来教你怎么实现
你的需求完全可以在Kibana里实现,核心是利用Kibana的自定义脚本聚合来拆分Elasticsearch histogram字段里的values和counts数组,把每一组数值-计数对应成独立的柱状。具体步骤如下:
1. 准备数据视图
先确保你已经在Kibana的数据视图中添加了目标索引,并且能正常看到data_histogram、metric这些字段。
2. 创建垂直柱状图可视化
进入Kibana的可视化库,点击「创建可视化」,选择「垂直柱状图」(Vertical Bar),并关联你的目标索引数据视图。
3. 配置横轴(X轴):拆分延迟值
- 选择「添加」→「桶」→「X轴」,聚合方式选Terms
- 不要直接选择字段,点击「切换到脚本」,输入以下Painless脚本:
这个脚本会把doc['data_histogram.values'].stream().map(v -> v.toString()).collect(Collectors.toList())data_histogram里的所有延迟值(values)提取出来,作为横轴的独立项。 - 在「选项」里,把「拆分方式」设置为「展开为单独的桶」,这样每个延迟值都会成为横轴上的一个独立柱子。
4. 配置纵轴(Y轴):匹配对应设备数量
- 选择「添加」→「指标」→「Y轴」,聚合方式选Sum
- 同样点击「切换到脚本」,输入以下Painless脚本:
这个脚本会根据横轴当前的延迟值(def values = doc['data_histogram.values']; def counts = doc['data_histogram.counts']; def targetValue = params._value; for (int i = 0; i < values.length; i++) { if (values[i] == Integer.parseInt(targetValue)) { return counts[i]; } } return 0;params._value),找到counts数组中对应的设备数量,然后返回该值(Sum聚合在这里因为单文档单值,结果就是对应的count)。
5. 堆叠形式设置(可选)
如果你想要堆叠效果,比如按metric字段区分不同指标的堆叠:
- 点击「添加」→「桶」→「系列」,聚合方式选Terms,字段选择
metric - 在「选项」里设置「堆叠模式」为「正常」即可。
这样配置完成后,你就能看到每个延迟值对应的柱子高度等于对应的设备数量,完全符合你的需求啦!
内容的提问来源于stack exchange,提问作者Flo Woo
相关产品推荐
相关产品推荐

