当前位置: 首页 > news >正文

es的histogram直方图聚合和terms分组聚合

你提到的这两个 Elasticsearch aggs 聚合语句:


第一种:histogram 直方图聚合

"aggs": {"DayDiagram": {"histogram": {"field": "${FiledName}","interval": ${TimeInterval},"extended_bounds": {"min": ${StartTime},"max": ${EndTime}}}}
}

第二种:terms 分组聚合

"aggs": {"Records": {"terms": {"field": "${GroupByField}","size": ${PageSize}}}
}

它们的区别概览

特性/维度histogram 聚合terms 聚合
聚合类型数值直方图(数值/时间区间)分类聚合(类似 SQL GROUP BY
适用字段类型long / integer / date 等数字类型keyword.keyword 可聚合的字段类型
聚合规则按固定步长分桶(如每5分钟、每100)按字段值枚举分桶
桶的 key 是什么?范围起点值(如 0、5、10、15)具体字段值(如“蓝色”,“白色”,“黄色”)
是否可控时间段?✅ 可通过 extended_bounds 强制显示所有区间❌ 只能显示实际存在的数据
典型应用时间趋势图、数值区间图某字段的分布、频次分析
支持排序✅ 默认按桶 key 排序✅ 默认按 doc_count 排序,可自定义

示例解释对比

histogram 示例:每 5 分钟统计一次事件数(时间直方图)

"aggs": {"DayDiagram": {"histogram": {"field": "EventTimeMillis","interval": 300000,"extended_bounds": {"min": 1622505600000,"max": 1622592000000}}}
}

假设 EventTimeMillislong 类型,单位是毫秒,表示事件时间。
每 5 分钟(300000ms)统计一次数据,支持时间缺口补全。

非常适合画:流量趋势图、柱状图、折线图


terms 示例:按车牌颜色统计通过数量(字段聚合)

"aggs": {"Records": {"terms": {"field": "PlateColor.keyword","size": 10}}
}

返回文档中最常出现的 10 种车牌颜色。
terms 是最常用的聚合类型,等价于 SQL 的 GROUP BY

非常适合做:分类统计、占比分析、分组报表


图示理解(类比 SQL)

histogram:

SELECT floor(EventTimeMillis / 300000) * 300000 AS time_slot, COUNT(*) 
FROM table 
GROUP BY time_slot;

terms:

SELECT PlateColor, COUNT(*) 
FROM table 
GROUP BY PlateColor
LIMIT 10;

是否可以嵌套?

可以:

例如你可以在 histogram 桶内再嵌套 terms:

"aggs": {"TimeSlot": {"histogram": {"field": "EventTimeMillis","interval": 300000},"aggs": {"ByPlateColor": {"terms": {"field": "PlateColor.keyword"}}}}
}

效果:每5分钟 + 按车牌颜色统计,非常适合图表联动。


总结对比

项目histogramterms
用途时间/数值分桶分类字段分桶
数据维度连续区间(固定间隔)离散值(不同字段值)
桶排序默认按 key 升序默认按 count 降序,可改按 key 排序
补全空值✅ 使用 extended_bounds 实现❌ 不支持
图表用途趋势图、时间序列饼图、条形图

http://www.dtcms.com/a/308672.html

相关文章:

  • pig Cloud中分布式锁的使用(setIfAbsent)
  • 扫描发票自动录入财务系统怎么做?
  • 定点数 与 浮点数
  • 软件项目中如何编写项目计划书?指南
  • ros2 tf2详解
  • 基于 C 语言视角:流程图中分支与循环结构的深度解析
  • 敏捷开发轻量级看板工具:提升效率的秘密武器
  • 【02】大恒相机SDK C#开发 —— 初始化相机,采集第一帧图像
  • 基于单片机智能油烟机设计/厨房排烟系统设计
  • mac fusion win11虚拟机 不能正确识别bitlocker USB
  • wordpress配置文章详情页自动生成目录点击定位
  • 计算机存储正数,负数
  • Flask Bootstrap 后台权限管理方案
  • 【工具变量】企业数字化转型:数字化无形资产占比测算(2007-2024年)
  • 【算法基础课-算法模板2】数据结构
  • kmp复习,需要多看多练
  • 类和对象(前章)
  • 藏语识别技术在媒资行业的应用案例剖析
  • SELinux 核心概念与访问控制机制解析
  • Windows 10 WSLUbuntu 22.04 安装并迁移到 F 盘
  • MyBatis入门---环境搭建
  • 基于SpringBoot和SpringAI框架实践
  • 案例开发 - 日程管理 - 第四期
  • 鸿蒙开发交叉类型
  • 《零基础入门AI:传统机器学习核心算法(决策树、随机森林与线性回归)》
  • pyspark使用
  • 使用SFTTrainer进行微调
  • sqli-labs靶场Less24
  • FlexLM/SLM协议解析
  • [硬件电路-110]:模拟电路 - 能量并非凭空产生,自激振荡器,一种把直流能量转换成交流信号的装置!