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

Grafana结合Elasticsearch:正则提取名称后合并计数的方法求助

解决Grafana中Elasticsearch数据源按名称聚合计数的问题

问题场景

当前使用Elasticsearch作为Grafana数据源,查询得到原始结果如下:

MessageCount
ResourceInvalidOperation-John5
ResourceInvalidOperation-Mary10
ResourceContent-George7
BusinessInvalidContent-John6
ResourceInvalidOperation-George9
ResourceReference-John1

需求:提取Message字段中XXXXX-名称格式里的名称部分,将同名记录的Count值求和合并,得到目标结果:

NameCount
John12
Mary10
George16

解决方案

方法一:Elasticsearch原生聚合(高效推荐)

直接在数据源查询阶段完成提取与聚合,比Grafana Transform更高效:

  1. 打开Grafana的Elasticsearch查询编辑器
  2. 添加Bucket aggregation,类型选择Terms
  3. 在Field选项中,选择Script,输入脚本:
    doc['Message.keyword'].value.split('-')[1]
    
    (若Message字段为keyword类型,去掉.keyword后缀即可)
  4. 添加Metrics聚合,类型选择Sum,目标字段选择你的Count字段(如Count或ES原生的_count)
  5. 执行查询,直接得到按名称聚合后的求和结果

方法二:Grafana Transform处理

若需在Grafana端完成转换,按以下步骤操作:

  1. 确保原始查询能返回完整的Message和Count数据
  2. 切换到Transform标签页,点击Add transformation
  3. 选择Extract fields转换:
    • 目标字段选Message
    • 正则表达式填入.*-(.*)$
    • 提取后的字段名设置为Name
  4. 继续添加Group by转换:
    • 分组字段选择刚提取的Name
    • 聚合函数选Sum,目标字段选Count
  5. 可选:添加Organize fields转换,隐藏原始Message字段,只保留Name和求和后的Count字段

内容的提问来源于stack exchange,提问作者Sekonder SS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:37:55