8. 聚合查询

简介: 8. 聚合查询

简介

聚合:英文为Aggregation (ES中简称Aggs),是ES除搜索功能外提供的针对ES数据做统计分析的功能。聚合有助于根据搜索查询提供聚合数据。

聚合查询是数据库中重要的功能特性,ES作为搜索引擎兼数据库,同样提供了强大的聚合分析能力。它基于查询条件来对数据进行分桶、计算的方法。有点类似于SQL中的group by 再加一些函数方法的操作。

注意:text类型是不支持聚合的。

测试数据

http

复制代码

# 创建索引 index 和映射 mapping 
PUT /friends
{
  "mappings": {
    "properties": {
      "name":{
        "type":"keyword"
      },
      "age":{
        "type": "integer"
      },
      "gender":{
        "type": "boolean"
      },
      "description":{
        "type": "text",
        "analyzer": "ik_smart"
      }
    }
  }
}
# 放入测试用例
PUT _bulk
{"index":{"_id":1,"_index" : "friends"} }
{"name" : "cfd","age":200,"gender":true,"description":"这个人很搞笑"}
{"index":{"_id":2,"_index" : "friends"} }
{"name" : "cdf","age":100,"gender":true,"description":"这个人很聪明"}
{"index":{"_id":3,"_index" : "friends"} }
{"name" : "fcd","age":50,"gender":true,"description":"这个人很乐观"}
{"index":{"_id":4,"_index" : "friends"} }
{"name" : "fdc","age":25,"gender":true,"description":"这个人很帅气"}
{"index":{"_id":5,"_index" : "friends"} }
{"name" : "dcf","age":10,"gender":true,"description":"这个人很积极"}
{"index":{"_id":6,"_index" : "friends"} }
{"name" : "dfc","age":20,"gender":true,"description":"这个人很喜欢"}
GET /friends/_search
{
  "query": {
    "match_all": {}
  }
}

使用

根据某个字段分组

http

复制代码

# 根据某个字段分组 统计数量 
GET /friends/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "price_group": {
      "terms": {
        "field": "age"
      }
    }
  }
}

求最大值(最小值)

http

复制代码

GET /friends/_search
{
  "query": {
    "match_all": {}
  },
  "size": 0, 
  "aggs": {
    "max_price": {
      "max": {
        "field": "age"
      }
    }
  }
}
GET /friends/_search
{
  "query": {
    "match_all": {}
  },
  "size": 0,
  "aggs": {
    "min_price": {
      "min": {
        "field": "age"
      }
    }
  }
}

求和(平均值avg)

http

复制代码

GET /friends/_search
{
  "query": {
    "match_all": {}
  },
  "size": 0,
  "aggs": {
    "sum_price": {
      "sum": {
        "field": "age"
      }
    }
  }
}


相关文章
|
存储 SQL Oracle
【Oracle系列】- 存储过程(Stored Procedure)
【Oracle系列】- 存储过程(Stored Procedure)
460 0
|
Android开发 iOS开发 MacOS
APP备案公钥、证书MD5指纹/签名MD5值获取最简单方法
APP备案公钥、证书MD5指纹/签名MD5值获取方法,Android安卓平台、Windows平台、macOS平台,三个平台获取方法, Android平台使用 APP备案助手,各大安卓应用市场搜索 APP备案助手 即可,Windows/macOS平台使用jadx-gui工具。
6824 2
|
9月前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
322 6
|
10月前
|
存储 关系型数据库 MySQL
MySQL MVCC深度解析:掌握并发控制的艺术
【10月更文挑战第23天】 在数据库领域,MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种重要的并发控制机制,它允许多个事务并发执行而不产生冲突。MySQL作为广泛使用的数据库系统,其InnoDB存储引擎就采用了MVCC来处理事务。本文将深入探讨MySQL中的MVCC机制,帮助你在面试中自信应对相关问题。
374 3
|
11月前
|
存储 安全 Java
列Java表(Lists)详解
在 Java 中,`List` 是一种用于存储有序集合的接口,允许重复元素,并提供了多种操作方法,如添加、删除、获取等。`List` 接口是 Java 集合框架的核心部分,常见的实现包括 `ArrayList`(动态数组)、`LinkedList`(双向链表)和 `Vector`(线程安全的动态数组)。
308 10
|
运维 Linux Apache
Docker详解(八)——Docker镜像制作
Docker详解(八)——Docker镜像制作
482 1
springboot集成ElasticSearch(支持集群)
springboot集成ElasticSearch(支持集群)
858 0
|
Ubuntu API Docker
Docker默认网络管理
Docker默认网络管理
225 0
|
存储 Docker 容器
Docker学习笔记二:如何创建Docker镜像?
Docker学习笔记二:如何创建Docker镜像?
708 0