10.Elasticsearch应用(十)

本文详细介绍了Elasticsearch中的聚合操作,包括其用途、不同类型(如Bucket、TermAggregation等)、度量聚合、聚合范围的控制以及性能优化策略,如eager_global_ordinals和索引预排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Elasticsearch应用(十)

1.为什么需要聚合操作

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

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

2.什么是聚合

聚合(aggregations)可以实现对文档数据的统计,分析,运算,在做聚合的时候往往是与文档过滤一起用的,一般不会对整个索引库进行聚合操作

3.聚合语法

在这里插入图片描述

4.聚合分类

  1. 桶聚合(Bucket): 用来对文档做分组
    • TermAggregation: 按照文档字段值分组
    • Date Histogram: 按照日期阶梯分组,例如一周为一组,或者一月为一组
  2. 度量聚合(Metric): 用以计算一些值,比如:最大值,最小值,平均值等
    • Avg: 求平均值
    • Max: 求最大值
    • Min: 求最小值
    • Stats: 同时求max,min,avg,sum等
  3. 管道聚合(pipeline): 其他聚合的结果为基础做聚合
  4. Matrix: 支持对多个字段的操作并提供一个结果矩阵

5.桶聚合

介绍

按照一定的规则,将文档分配到不同的桶中,从而达到分类的目的。ES提供的一些常见的
Bucket Aggregation

TermAggregation

需求

统计所有数据中的酒店品牌有几种,此时可以根据酒店品牌的名称做聚合

示例

在这里插入图片描述

默认排序规则

默认情况下,Bucket聚合会统计Bucket内的文档数量,记为_count,并且按照_count降序排序。我们可以修改结果排序方式:

在这里插入图片描述

注意

默认情况下,Bucket聚合是对索引库的所有文档做聚合,我们可以限定要聚合的文档范围,只要添加query条件即可

分词字段不行,必须是不能分词的字段

聚合还会返回查询的文档,所以建议设置size为0,因为聚合一般不需要返回文档,这样能提高性能

6.度量聚合

介绍

—些数学运算,可以对文档字段进行统计分析,类比MySQL中的 min(),max(),sum() 操作

States

介绍

同时求max,min,avg,sum等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值