ElasticSearch - Aggregations 聚合分析

本文介绍了ElasticSearch中的聚合功能,包括指标聚合、存储桶聚合和管道聚合。聚合分为指标聚合(如最大、最小、求和、平均值)和存储桶聚合(类似SQL的分组操作),以及管道聚合(对其他聚合的输出做二次处理)。文中详细阐述了各种聚合类型的用法和示例,如直方图、范围聚合、日期直方图、字段值分组桶等,并提及了如何通过buckets_path进行管道聚合操作。
摘要由CSDN通过智能技术生成

一、关于

  •     1、说明

    在 ElasticSearch 中,基于索引和检索的基础上,提供了聚合(Aggregations)的功能,对存储的数据进行统计和分析

    在 ElasticSearch 中,将聚合分为 指标聚合(Metric)、存储桶聚合(Bucket)、管道聚合(Pipeline)三类

    参考:Aggregations | Elasticsearch Guide [8.0] | Elastic

  •     2、语法

    在查询(_search)的请求体中,以 aggregations 为节点,并按如下的语法来定义

{
    "aggregations" : {                                        <!-- 聚合节点,固定的格式,使用 aggregations 或 aggs 命名 -->
        "<aggregation_name>" : {                              <!-- 聚合的名字,自定义,比如 aggs-max 等 -->
            "<aggregation_type>" : {                          <!-- 聚合的类型,例如 avg、range 等 -->
                <aggregation_body>                            <!-- 聚合体:对哪些字段进行聚合 -->
            }
            [,"meta" : {  [<meta_data_body>] } ]?             <!-- 元数据,在结果里原样返回 -->
            [,"aggregations" : { [<sub_aggregation>]+ } ]?    <!-- 在聚合里面再定义的子聚合 -->
        }
        [,"<aggregation_name_2>" : { ... } ]*                 <!-- 其他聚合的名字 -->
    }
}
  •     3、补充

    默认情况下,包含聚合的搜索会同时返回搜索结果和聚合结果。若仅要返回聚合结果,请设置 size 为 0

    默认情况下,操作字段没有值的文档将被忽略,但是也可以为它们定义具体值,通过 missing 参数指定

二、示例

  •     1、指标聚合

        对一个数据集执行类似SQL中的最大(max)、最小(min)、求和(sum)、求平均(avg)等操作的聚合

    基础聚合

{
    "aggs": {
        // 求所有文档的指定字段的平均值
        "aggs_price_avg": {
            "avg": {
                "field": "price"
            }
        }
    }
}

    优化返回

  GET /goods/_search
{
    "aggs": {
        "aggs-avg": {
            "avg": {
                "field": "price",
                // 为没有该值的文档指定默认值
                "missing": 0
            }
        }
    },
    // 不返回搜索结果
    "size": 0
}

    搜索聚合

  GET /goods/_search
{
    "aggs": {
        // 根据指定字段分桶
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值