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

Elasticsearch 聚合概览及示例

Elasticsearch 是一个强大的搜索引擎,除了提供搜索功能外,它还内置了丰富的聚合功能,允许用户对数据进行统计、分析和运算。聚合可以帮助我们理解数据的分布和统计特性,是数据探索和报告的重要工具。本文将介绍 Elasticsearch 中的三种主要聚合类型:桶(Bucket)聚合、度量(Metric)聚合和管道(Pipeline)聚合,并提供示例说明。

桶(Bucket)聚合

桶聚合主要用于对文档进行分组,并统计每组的文档数量。以下是几种常见的桶聚合:

  • TermAggregation:按照文档字段的词条值分组。
  • Date Histogram:按照日期阶梯分组,如按周、月或年分组。

示例:TermAggregation

假设我们有一个酒店预订数据索引,我们可以使用 TermAggregation 来统计每个城市的酒店数量。

GET /hotel/_search
{"size": 0, // 不需要原始文档,只需要聚合结果"aggs": {"city_buckets": {"terms": {"field": "city"}}}
}

度量(Metric)聚合

度量聚合用于计算数值类型的字段,例如求平均值、最大值、最小值等。

  • Avg:计算平均值。
  • Max:找出最大值。
  • Min:找出最小值。
  • Stats:同时计算最大值、最小值、平均值和总和。

示例:Avg 和 Stats

继续使用酒店预订数据索引,我们可以计算每个城市酒店的平均价格和价格范围。

GET /hotel/_search
{"size": 0,"aggs": {"price_stats": {"stats": {"field": "price"}},"average_price": {"avg": {"field": "price"}}}
}

管道(Pipeline)聚合

管道聚合是基于其他聚合结果进行的聚合,例如我们可以计算每个城市酒店价格的标准差或累计总和。

  • Derivative:计算相邻文档的度量聚合值的差异。
  • Sum Bucket:计算指定度量聚合的总和。

示例:Sum Bucket

如果我们想要计算所有城市酒店的总价格,然后查看每个城市价格的累计总和,我们可以使用 Sum Bucket 管道聚合。

GET /hotel/_search
{"size": 0,"aggs": {"total_price": {"sum": {"field": "price"}},"city_price_sums": {"terms": {"field": "city"},"aggs": {"cumulative_price": {"sum_bucket_selector": {"buckets_path": "_price","script": "params.aggregations['total_price'].value"}}}}}
}

结语

Elasticsearch 的聚合功能为数据分析提供了强大的支持。桶聚合帮助我们对数据进行分组统计,度量聚合让我们可以计算数值字段的各种统计数据,而管道聚合则让我们在其他聚合的基础上进一步分析数据。理解并掌握这些聚合类型,可以帮助我们更深入地洞察数据,为决策提供数据支持。希望本文能够帮助你更好地利用 Elasticsearch 的聚合功能进行数据分析。

http://www.lryc.cn/news/425626.html

相关文章:

  • 【抓包】- Fiddler抓包教程,使用Fiddle抓取B站视频;ffmpeg的使用方法
  • Linux网络配置和维护命令(三)
  • 代码随想录算法训练营第二天 |209.长度最小子数组; 59.螺旋矩阵|| ; 前缀和
  • Go语言基础--数据类型(整型、字符型)
  • SpringBoot配置--Profile
  • 在Go中理解栈和先进先出原则
  • Ted靶机渗透测试
  • 【chart.js】折线图给点添加点击事件
  • 旧手机NAS方案
  • Secure CRT 9.x版本高亮着色配置文件
  • kafka无法启动,提示连接zookeeper超时
  • mysql5.7.20升级5.7.44
  • 支持S/MIME证书的邮件客户端有哪些?
  • uniapp本地打包app安装说明
  • ddos造成服务器瘫痪后怎么办
  • 重磅官宣!追光少年【彭禹锦】荣担任中国美育促进网amp;IPA美育中国行代言人
  • Python 解析GIS的SHP文件
  • 大模型微调--文章3
  • 游戏测试中需求分析的本质
  • 2024零基础入行软件测试全网最全攻略
  • spring-boot-starter-quartz 自动化配置解析
  • DM8 数据库查询版本号以及授权到期时间SQL
  • 算法【Java】—— 双指针算法
  • 【Python快速入门和实践013】Python常用脚本-目标检测之按照类别数量划分数据集
  • C++ Primer 总结索引 | 第十八章:用于大型程序的工具
  • Python实现GAN(生成对抗网络)图像修复算法
  • java语言中的websocket
  • ASP.NET在线交流论坛管理系统
  • 【Kubernetes】身份认证与鉴权
  • 数据集与数据库:有什么区别?