您当前的位置: 首页 >  慌途L

ES(四)| 数据聚合(分组、求和、求平均值、求最大最小值)

慌途L 发布时间:2022-08-24 22:45:00 ,浏览量:9

ES(四)| 数据聚合(分组、求和、求平均值、求最大最小值)
  • 数据聚合
    • 1.聚合的种类
    • 2.DSL实现聚合
      • 2.1.Bucket聚合语法
      • 2.2.聚合结果排序
      • 2.3.限定聚合范围
      • 2.4.Metric聚合语法
      • 2.5.总结

上一篇:ES(三)| 查询、排序、分页(深度分页问题)、高亮显示、Java使用RestClient进行ES操作

数据聚合

聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

  • 什么品牌的手机最受欢迎?
  • 这些手机的平均价格、最高价格、最低价格?
  • 这些手机每月的销售情况如何?

实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。

1.聚合的种类

聚合常见的有三类:

  • 桶(Bucket)聚合:用来对文档做分组

    • TermAggregation:按照文档字段值分组,例如按照品牌值分组、按照国家分组
    • Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组
  • 度量(Metric)聚合:用以计算一些值,比如:最大值、最小值、平均值等

    • Avg:求平均值
    • Max:求最大值
    • Min:求最小值
    • Stats:同时求max、min、avg、sum等
  • 管道(pipeline)聚合:其它聚合的结果为基础做聚合

注意:参加聚合的字段必须是keyword、日期、数值、布尔类型

2.DSL实现聚合

现在,我们要统计所有数据中的酒店品牌有几种,其实就是按照品牌对数据分组。此时可以根据酒店品牌的名称做聚合,也就是Bucket聚合。

2.1.Bucket聚合语法

语法如下:

GET /hotel/_search
{
   
  "size":            
关注
打赏
1688896170
查看更多评论
0.2353s