You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 20:27:34