清淨
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Elasticsearch

    • 简介
    • 基本概念
    • 安装
    • 基本用法
    • Query DSL
    • 聚合
    • 映射
    • 分词
    • 配置
    • Query DSL

      • Query and filter context
      • Compound queries
      • Full text queries
      • Match all query
    • Java High Level REST Client

聚合

参考

Aggregations

聚合是一种分析数据的方法,它将数据分组并计算每个组的指标。聚合可以看作是 SQL 中的 GROUP BY、聚合函数等操作。

搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄:

// GET http://localhost:9200/account/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "age_agg": {
      "terms": {
        "field": "age"
      }
    },
    "age_avg": {
      "avg": {
        "field": "age"
      }
    }
  }
}

统计所有人的年龄分布,并求出每个年段的平均薪资:

// GET http://localhost:9200/account/_search
{
  "_source": false, // hits.hits 中不返回 _source
  "size": 0, // 不返回文档, 即 hits.hists 为空
  "aggs": {
    "age_agg": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "balance_avg": {
          "avg": {
            "field": "balance",
            "size": 10 // 只返回前 10 种分布情况
          }
        }
      }
    }
  }
}

统计所有人的年龄分布,并且额外统计各个年龄段 M 和 F 的平均薪资和整个年龄段的平均薪资:

// GET http://localhost:9200/account/_search
{
  "size": 0,
  "aggs": {
    "aggAgg": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "genderAgg": {
          "terms": {
            "field": "gender.keyword" // text 类型的字段做聚合时需要加上 .keyword
          },
          "aggs": {
            "balanceAvg": {
              "avg": {
                "field": "balance"
              }
            }
          }
        },
        "balanceAvg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}
想要编辑此页?
上次更新: 2025/6/3 20:29
贡献者: Junfeng Dai
←Query DSL映射→
[ 纸上得来终觉浅绝知此事要躬行 ]
Copyright © 2021-present Junfeng Dai
蜀ICP备2021009537号