ES聚合查询详解(一)

简介: ES聚合查询详解(一)

前言


本文主要介绍ES中的聚合查询。


一、聚合查询简介


聚合查询可以将数据汇总为度量、统计或其他分析。


聚合查询主要分为三个类别:


Metric 指标聚合

Bucket 桶聚合

Pipeline 管道聚合


二、聚合函数的使用


1、如何运行一个聚合查询

GET /my-index-000001/_search
{
  "aggs": {
    "my-agg-name": {
      "terms": {
        "field": "my-field"
      }
    }
  }
}


说明:

aggs 说明采用的是聚合查询

my-agg-name 是聚合查询的名称

terms 说明采用的是Terms aggregation多值聚合:一个基于多桶值源的聚合,其中桶是动态构建的——每个唯一值一个桶。统计每个唯一值的个数。

field 指定需要统计的字段。


2、限制聚合查询的范围

GET /my-index-000001/_search
{
  "query": {
    "range": {
      "@timestamp": {
        "gte": "now-1d/d",
        "lt": "now/d"
      }
    }
  },
  "aggs": {
    "my-agg-name": {
      "terms": {
        "field": "my-field"
      }
    }
  }
}


3、仅返回聚合结果

默认情况下,包含聚合的查询会同时返回搜索命中的结果和聚合结果。若要只返回聚合结果,请将大小设置为0

GET /my-index-000001/_search
{
  "size": 0,
  "aggs": {
    "my-agg-name": {
      "terms": {
        "field": "my-field"
      }
    }
  }
}

4、运行多个聚合

GET /my-index-000001/_search
{
  "aggs": {
    "my-first-agg-name": {
      "terms": {
        "field": "my-field"
      }
    },
    "my-second-agg-name": {
      "avg": {
        "field": "my-other-field"
      }
    }
  }
}

5、子聚合

统计索引中my-field字段的每个唯一值的记录数,并计算每组记录中my-other-field字段的平均值。

典型的场景:先分组,再计算

GET /my-index-000001/_search
{
  "aggs": {
    "my-agg-name": {
      "terms": {
        "field": "my-field"
      },
      "aggs": {
        "my-sub-agg-name": {
          "avg": {
            "field": "my-other-field"
          }
        }
      }
    }
  }
}

执行结果:

{
  ...
  "aggregations": {
    "my-agg-name": {                           
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "foo",
          "doc_count": 5,
          "my-sub-agg-name": {                 
            "value": 75.0
          }
        }
      ]
    }
  }
}


6、聚合查询中使用scripts脚本

采用script脚本提取运行时字段,并对运行时字段message.length进行聚合。

GET /my-index-000001/_search?size=0
{
  "runtime_mappings": {
    "message.length": {
      "type": "long",
      "script": "emit(doc['message.keyword'].value.length())"
    }
  },
  "aggs": {
    "message_length": {
      "histogram": {
        "interval": 10,
        "field": "message.length"
      }
    }
  }
}


7、聚合结果分页

GET /my-index-000001/_search
 {
      "size":0,
      "aggs" : {
          "group_account" : {
              "terms" : {
                "size": 2,
                "field" : "account",
                "order": {
                  "sum_gmv" : "desc" 
                }
              },
              "aggs": {
                  "sum_gmv": {
                      "sum": {"field": "bus_ep_gmv"}
                  }
              }
          }
      }
  }


8、聚合查询缓存说明

为了获得更快的响应,Elasticsearch 将频繁运行的聚合结果缓存到切分请求缓存中。

若要获取缓存结果,请对每次搜索使用相同的首选项字符串。

如果您不需要搜索命中、只返回聚合结果,请将大小设置为0,以避免填充缓存。


总结


本文主要是聚合查询进行了简单的介绍。

1、聚合查询主要使用场景:数据的统计分析。

2、聚合查询主要分为三个类别:


Metric 指标聚合

Bucket 桶聚合

Pipeline 管道聚合


3、聚合查询的简单使用示例。

目录
相关文章
|
XML Java 数据库
SpringBoot系列----注解详解
SpringBoot系列----注解详解
660 0
|
10月前
|
人工智能 程序员 API
GPT-5.2来了,老金详细给你说说它为什么是王
OpenAI悄然上线GPT-5.2,因谷歌Gemini 3发布引发“红色警报”。新模型提升显著:幻觉减少38%,上下文达40万token,支持长文档精准处理;ARC-AGI-2与GDPval评测显示其真实推理与工作能力大幅增强,尤其适合金融、法律等专业场景。推出Instant、Thinking、Pro三版本,满足不同需求。虽无惊艳发布,但聚焦打工人实际应用,标志着AI向通用生产力工具迈进。
984 11
|
8月前
|
人工智能 安全 API
2026年OpenClaw/Clawdbot官方50+skills安装攻略:一键部署+安全使用指南,避开恶意技能陷阱
ClawHub平台上5700+技能鱼龙混杂,2026年2月爆发的ClawHavoc事件更是暴露了12%的恶意技能风险,让用户在选择时无所适从。而OpenClaw官方内置的53个技能,经过严格安全校验,是最可靠的选择。本文先提供**阿里云OpenClaw极速部署简单步骤**,再深度拆解这53个官方技能的功能细节、风险等级、安装建议,搭配可直接复制的代码命令,全程规避其他云厂商名称,帮助用户安全高效地解锁OpenClaw核心能力。
3442 3
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——事务相关
本文介绍Spring Boot事务配置管理,阐述事务在企业应用开发中的重要性。事务确保数据操作可靠,任一异常均可回滚至初始状态,如转账、购票等场景需全流程执行成功才算完成。同时,事务管理在Spring Boot的service层广泛应用,但根据实际需求也可能存在无需事务的情况,例如独立数据插入操作。
429 0
|
10月前
|
关系型数据库 MySQL Docker
03-Docker下载加速 docker下载加速
本文介绍了两种Docker镜像下载加速方法:一是使用网易数帆、阿里云等镜像仓库直接拉取镜像,如通过`hub.c.163.com/library/mysql`下载MySQL;二是配置阿里云镜像加速器,修改`/etc/docker/daemon.json`文件添加加速地址,重启Docker服务后即可使用官方镜像命令快速拉取。此外,还介绍了如何为Docker配置HTTP/HTTPS代理,提升网络访问效率。
966 0
|
弹性计算 数据中心 UED
阿里云弹性公网IP线路类型【BGP(多线)_精品】是什么意思?
阿里云弹性公网IP的BGP(多线)_精品线路是一种优化海外回中国内地流量的公网线路,具备低时延、高稳定性优势,适用于中国内地用户访问海外部署的业务,如Web服务在中国香港等地域时,可显著提升访问体验。支持按量付费和包年包月模式,地域覆盖中国香港及多个亚太地区。
2502 1
|
关系型数据库 MySQL Unix
【MySQL用法】MySQL 中 datetime 和 timestamp 的区别与选择
【MySQL用法】MySQL 中 datetime 和 timestamp 的区别与选择
1704 0
|
机器学习/深度学习 人工智能 达摩院
开源!一文了解阿里一站式图计算平台GraphScope
随着大数据的爆发,图数据的应用规模不断增长,现有的图计算系统仍然存在一定的局限。阿里巴巴拥有全球最大的商品知识图谱,在丰富的图场景和真实应用的驱动下,阿里巴巴达摩院智能计算实验室研发并开源了全球首个一站式超大规模分布式图计算平台GraphScope,并入选中国科学技术协会“科创中国”平台。本文详解图计算的原理和应用及GraphScope的架构设计。
开源!一文了解阿里一站式图计算平台GraphScope
|
JSON fastjson 数据格式
利用fastjson对json转map的操作
String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}"; //第一种方式 Map maps = (Map)JSON.
13882 1