第三阶段 21 · terms 分组聚合
21 · terms 分组聚合阶段第三阶段 / 聚合能力EStermsagg | PostgreSQLGROUP BY col1. 概念terms聚合按某字段的值分桶bucket每个不同的值一个桶相当于 SQL 的GROUP BY。每个桶默认带doc_count该组文档数。2. PostgreSQL 对照-- 按 geo 分组统计数量和金额SELECTgeo_cd,COUNT(*)AScnt,SUM(net_amount)AStotalFROMsalesdataGROUPBYgeo_cdORDERBYtotalDESCLIMIT10;3. ES DSL基本分组GET salesdata_idx/_search { size: 0, aggs: { by_geo: { terms: { field: geo_cd, size: 10 } } } }返回每个geo_cd及其doc_count。分组 组内指标GROUP BY SUMterms里嵌一个子聚合就是GROUP BY后再算指标GET salesdata_idx/_search { size: 0, aggs: { by_geo: { terms: { field: geo_cd, size: 10, order: { total: desc } }, aggs: { total: { sum: { field: net_amount } } } } } }order: { total: desc }相当于ORDER BY SUM(net_amount) DESC。4. Spring Boot 实现ComponentpublicclassDoc21TermsAgg{AutowiredprivateElasticsearchClientelasticsearchClient;/** GROUP BY geo_cd, SUM(net_amount) */publicMapString,DoublesumByGeo(StringindexName,inttopN)throwsIOException{SearchResponseVoidrespelasticsearchClient.search(s-s.index(indexName).size(0).aggregations(by_geo,a-a.terms(t-t.field(geo_cd).size(topN).order(List.of(NamedValue.of(total,SortOrder.Desc)))).aggregations(total,sub-sub.sum(su-su.field(net_amount)))),Void.class);MapString,DoubleresultnewLinkedHashMap();for(StringTermsBucketbucket:resp.aggregations().get(by_geo).sterms().buckets().array()){Stringgeobucket.key().stringValue();doubletotalbucket.aggregations().get(total).sum().value();result.put(geo,total);}returnresult;}}读取要点字符串 terms 用.sterms()数值 terms 用.lterms()桶列表.buckets().array()桶 key 用bucket.key().stringValue()。importco.elastic.clients.elasticsearch._types.aggregations.StringTermsBucket、co.elastic.clients.util.NamedValue桶排序用order接收ListNamedValueSortOrder不是Map。5. 坑与最佳实践size默认只返回前 10 个桶要更多分组记得调大size但别无脑设很大。terms的计数是近似的分片场景分片多时doc_count可能有误差需要精确可加大shard_size或用 composite 聚合。高基数字段慎用对唯一值极多的字段如订单号分组会很吃内存考虑 composite 分页聚合。对keyword分组text字段分组要用field.keyword。组内排序 vs 组间排序order控制桶组之间的顺序别和文档排序混淆。下一篇22-date_histogram-时间分桶.md。

相关新闻

从慢查询到搜索引擎:正向索引与倒排索引的核心原理与实战选型

从慢查询到搜索引擎:正向索引与倒排索引的核心原理与实战选型

1. 从一次“慢查询”说起:为什么我们需要索引? 那天下午,我正喝着咖啡,突然收到一条告警:一个核心的搜索接口响应时间飙到了5秒以上。这可不是小事,用户搜索一个商品,等上5秒,体验基…

2026/8/2 16:15:50阅读更多 →
单片机毕设项目:基于 STM32/51 单片机的 8 路病床无线呼叫对讲系统设计 基于 NRF24L01 的病房智能呼叫与输液监测装置开发(020301)

单片机毕设项目:基于 STM32/51 单片机的 8 路病床无线呼叫对讲系统设计 基于 NRF24L01 的病房智能呼叫与输液监测装置开发(020301)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/2 16:15:50阅读更多 →
单片机毕设项目:多路病患无线呼叫信号优先级排序硬件系统实现 基于 51/STM32 的病床呼叫发射与医护接收终端设计(020201)

单片机毕设项目:多路病患无线呼叫信号优先级排序硬件系统实现 基于 51/STM32 的病床呼叫发射与医护接收终端设计(020201)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/2 16:15:50阅读更多 →
别再用ChatGPT粘贴复制了!真正能进生产环境的AI表格提取系统,必须满足这6个SLO硬指标

别再用ChatGPT粘贴复制了!真正能进生产环境的AI表格提取系统,必须满足这6个SLO硬指标

更多请点击: https://kaifayun.com 第一章:AI表格数据提取的核心挑战与生产级定义 在真实工业场景中,AI驱动的表格数据提取远非OCR规则匹配的简单叠加。其核心挑战根植于文档异构性、语义歧义性与系统可靠性三重张力:扫描质量参差…

2026/8/2 23:28:21阅读更多 →
AI创造力断层警报:2024全球测评显示青少年发散思维下降37%,这份思维免疫方案仅开放首批500份

AI创造力断层警报:2024全球测评显示青少年发散思维下降37%,这份思维免疫方案仅开放首批500份

更多请点击: https://kaifayun.com 第一章:AI创造力断层警报:2024全球测评揭示的思维危机本质 2024年,由MIT、DeepMind与联合国教科文组织联合发布的《全球AI创造力基准报告》首次量化揭示了一种隐性但系统性的“创造力断层”——…

2026/8/2 23:28:20阅读更多 →
如何快速实现《鸣潮》全自动化游戏体验:面向技术爱好者的完整指南

如何快速实现《鸣潮》全自动化游戏体验:面向技术爱好者的完整指南

如何快速实现《鸣潮》全自动化游戏体验:面向技术爱好者的完整指南 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是…

2026/8/2 23:28:20阅读更多 →
洛雪音乐音源:打破平台壁垒,打造你的专属音乐图书馆

洛雪音乐音源:打破平台壁垒,打造你的专属音乐图书馆

洛雪音乐音源:打破平台壁垒,打造你的专属音乐图书馆 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否曾为了一首歌在不同音乐平台间来回切换?是否厌倦了为…

2026/8/2 23:28:20阅读更多 →
TV-Multiplatform高级技巧:历史记录同步、播放速度调节与快捷键使用

TV-Multiplatform高级技巧:历史记录同步、播放速度调节与快捷键使用

TV-Multiplatform高级技巧:历史记录同步、播放速度调节与快捷键使用 【免费下载链接】TV-Multiplatform 基于fonmi/TV项目的, 简单桌面版本实现。 项目地址: https://gitcode.com/gh_mirrors/tv/TV-Multiplatform TV-Multiplatform是一款基于fonm…

2026/8/2 23:28:20阅读更多 →
【智元机器人技术解析】本体、数据与具身大模型如何走向规模部署

【智元机器人技术解析】本体、数据与具身大模型如何走向规模部署

文章目录智元机器人技术解析:本体、数据与具身大模型如何走向规模部署一、引言:智元不只是在造一台人形机器人二、纵向演进:从远征 A1 到具身智能全栈2.1 成立之初就选择“本体与智能并行”2.2 从产品发布转向部署验证三、产品全景&#xff1…

2026/8/2 23:26:20阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/2 1:29:34阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/2 2:32:55阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/2 2:09:20阅读更多 →