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

如何在ElasticSearch+Kibana中统计污染物指标阈值触发次数?

环境监测数据超标次数统计解决方案(Elasticsearch + Kibana)

一、直接用Lens实现(推荐)

完全可以用Lens完成中位数/中位数移动平均值的超标次数统计,步骤如下:

1. 创建核心指标(中位数或中位数移动平均值)

  • 打开Lens并选择目标环境监测索引
  • 若统计中位数超标次数:添加「聚合指标」,选择「中位数」,关联污染物数值字段(如pm25_value)
  • 若统计中位数移动平均值超标次数(符合欧盟24h/8h限值要求):
    • 先按上述方式创建中位数指标
    • 给该指标添加「移动窗口」转换,设置窗口大小(需匹配数据采集频率:比如每小时采集一次,24h窗口就设为24;每15分钟一次则设为96),时间单位选「数据点」

2. 构建超标次数统计

  • 添加新的「聚合指标」,选择「计数」
  • 给这个计数指标添加「过滤器」转换,设置过滤条件为:[刚才创建的中位数/移动平均指标] > [法规限值](比如PM2.5 24h限值填25)

3. 按年份分组展示

  • 在「分桶」区域添加「日期直方图」,选择时间字段,粒度设为「年」
  • 可选:添加「术语」分桶,选择监测站字段,实现按站点拆分每年的超标次数

二、备选方案(Lens灵活性不足时)

1. 用Transform预处理数据

提前计算超标标记,简化后续统计:

  • 进入Kibana的「Transform」页面,创建新的「pivot transform」
  • 分组键选择:监测站字段 + 日期直方图(按天/8h窗口,匹配法规时间要求)
  • 聚合项:
    • 计算污染物的中位数
    • 计算中位数的移动平均值(用moving_avg聚合)
    • 添加脚本字段:is_over_limit,脚本逻辑为doc['moving_avg_median'].value > 限值 ? 1 : 0
  • 执行Transform生成新索引,之后直接在Lens中对新索引按年份sumis_over_limit字段,即可得到每年超标次数

2. 用Discover+可视化构建器

  • 打开Discover,添加过滤器:[中位数/移动平均字段] > [限值](若移动平均未提前计算,可在Discover中添加运行时字段实现)
  • 点击「保存」后进入「可视化构建器」,选择「日期直方图」,时间粒度设为「年」,Y轴选「计数」,即可得到每年超标次数

3. Timelion(旧版Kibana可选)

用Timelion脚本直接计算并统计:

.es(index=your_monitor_index, q="pm25_moving_avg:>25").split(terms=station_id).timechart(sum=count).groupby('year')

注:需提前确保pm25_moving_avg是已计算好的字段或运行时字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:15:23