当前位置: 首页 > 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.lryc.cn/news/605500.html

相关文章:

  • Ubuntu/Debian 搭建 Nginx RTMP 服务器全攻略
  • [Broken IOS] 配置CLI | 终端用户界面TUI
  • 分布式ID方案(标记)
  • 【Linux】linux基础开发工具(二) 编译器gcc/g++、动静态库感性认识、自动化构建-make/Makefile
  • BasicAuthenticationFilter处理 HTTP 基本认证(Basic Authentication)的核心过滤器详解
  • 打破数据质量瓶颈:用n8n实现30秒专业数据质量报告自动化
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | LiveUserFilter(实时用户过滤组件)
  • ensp安全策略实验
  • 【工具】NVM完全指南:Node.js版本管理工具的安装与使用详解
  • 嵌入式仿真教学的革新力量:深圳航天科技创新研究院引领高效学习新时代
  • 【n8n】如何跟着AI学习n8n【03】:HTTPRequest节点、Webhook节点、SMTP节点、mysql节点
  • 从“碎片化”到“完美重组”:IP报文的分片艺术
  • mysql笔记02:DML插入、更新、删除数据
  • 【读书笔记】Design Patterns (1994)✅
  • 微软发布Microsoft Sentinel数据湖国际版
  • JVM之【Java虚拟机概述】
  • Python实现调整矩阵维度: view
  • 【13】大恒相机SDK C#开发 —— Fom1中实时处理的8个图像 实时显示在Form2界面的 pictureBox中
  • 磁盘坏道检测工具在美国服务器硬件维护中的使用规范
  • MVS相机+YOLO检测方法
  • 【03】大恒相机SDK C#开发 —— 回调采集图像,关闭相机
  • Java WEB技术-序列化和反序列化认识(SpringBoot的Jackson序列化行为?如何打破序列化过程的驼峰规则?如何解决学序列化循环引用问题?)
  • 学习笔记《区块链技术与应用》第三天 网络 难度
  • 详解分布式数据库缓存技术:高性能数据访问的基石
  • 如何在 macOS 上使用 dnsmasq 搭建本地 DNS 缓存/转发
  • 深度解析:基于Python构建的闲鱼自动化营销与信息发送机器人
  • IO流专题
  • linux运维学习第十三周
  • Linux 服务器性能优化:性能监控,系统性能调优,进程优先级,内核升级全解析
  • 前端框架Vue3(二)——Vue3核心语法之OptionsAPI与CompositionAPI与setup