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

如何在Kibana中计算两个聚合指标间的比率?Scripted Fields不适用

如何在Kibana中计算聚合指标的比率

这确实是Scripted Fields的一个局限——它只能在单文档层面做计算,完全没法处理聚合后指标间的比率需求。不过Kibana有好几种实用的方案能解决这个问题,我给你梳理几个最常用的:

1. 使用Lens可视化(推荐,Kibana主流工具)

Lens是Kibana现在主推的可视化工具,原生支持基于聚合结果的计算,操作非常直观:

  • 打开Lens,选择你的索引模式;
  • 先添加第一个聚合指标(比如选择「总和」函数,关联字段metric_a);
  • 再添加第二个聚合指标(同样选择「总和」函数,关联字段metric_b);
  • 点击顶部的「添加计算」按钮,选择「比率」选项;
  • 在弹出的设置里,指定分子为第一个指标、分母为第二个指标,确认后就能直接生成比率指标了;
  • 还可以在指标设置里调整显示格式(比如改成百分比),让结果更直观。

2. 使用Timelion(适合时序数据场景)

如果你的数据是时序类的,Timelion会是个灵活的选择,它专门处理时序数据的计算:

  • 打开Timelion,输入类似这样的表达式:
    .es(index=your_index_name, metric=sum:metric_a) /.es(index=your_index_name, metric=sum:metric_b).label("A/B比率").format(percent)
    
  • 解释一下:.es()函数分别获取两个指标的总和,用/做除法运算,.label()给结果加名称,.format(percent)把结果转成百分比显示;
  • 你还可以根据需要添加时间范围过滤、分组等参数,适配你的数据场景。

3. 使用Canvas(适合定制化仪表盘)

Canvas适合制作高度定制的仪表盘,能直接通过表达式计算聚合后的比率:

  • 打开Canvas,先创建两个「数据元素」,分别查询两个指标的聚合值:
    比如第一个元素的表达式:
    filters | essql query="SELECT SUM(metric_a) FROM your_index_name" | getCell 0
    
    第二个元素的表达式:
    filters | essql query="SELECT SUM(metric_b) FROM your_index_name" | getCell 0
    
  • 然后添加一个「文本元素」,用以下表达式计算并显示比率:
    var sumA = elements.sum_a_element_id | getValue
    var sumB = elements.sum_b_element_id | getValue
    math "sumA / sumB" | formatNumber "0.00%"
    
  • 替换掉表达式里的元素ID和索引名称,就能得到你需要的比率了。

4. 使用Elasticsearch管道聚合(查询层面预计算)

如果希望在查询Elasticsearch时就直接算出比率,可以用bucket_script管道聚合,之后在Kibana可视化里直接调用这个聚合结果:

  • 构造包含管道聚合的查询DSL,示例如下:
    {
      "size": 0,
      "aggs": {
        "sum_metric_a": {
          "sum": { "field": "metric_a" }
        },
        "sum_metric_b": {
          "sum": { "field": "metric_b" }
        },
        "a_b_ratio": {
          "bucket_script": {
            "buckets_path": {
              "a_value": "sum_metric_a",
              "b_value": "sum_metric_b"
            },
            "script": "params.a_value / params.b_value"
          }
        }
      }
    }
    
  • 在Kibana的可视化(比如垂直条形图)中,选择「自定义聚合」,导入这个DSL,然后把a_b_ratio作为指标显示即可。

内容的提问来源于stack exchange,提问作者André Silveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:26:17