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"
      }
    }
  }
}


相关文章
使用mongo聚合分组查询获取每一组的时间最大的一条数据
使用mongo聚合分组查询获取每一组的时间最大的一条数据
960 0
|
6月前
DQL-分组聚合
DQL-分组聚合
14 0
|
SQL 分布式计算 Java
聚合操作_groupBy_聚合操作 | 学习笔记
快速学习聚合操作_groupBy_聚合操作
100 0
聚合操作_groupBy_聚合操作 | 学习笔记
|
大数据 开发者
聚合操作_多维聚合_rollup | 学习笔记
快速学习聚合操作_多维聚合_rollup
74 0
聚合操作_多维聚合_rollup | 学习笔记
|
分布式计算 大数据 Spark
聚合操作_多维聚合_rollup 案例 | 学习笔记
快速学习聚合操作_多维聚合_rollup 案例
59 0
聚合操作_多维聚合_rollup 案例 | 学习笔记
|
大数据 开发者
聚合操作_多维聚合_需求介绍 | 学习笔记
快速学习聚合操作_多维聚合_需求介绍
70 0
聚合操作_多维聚合_需求介绍 | 学习笔记
|
SQL 大数据 开发者
聚合操作_多维聚合_GroupedDataset | 学习笔记
快速学习聚合操作_多维聚合_GroupedDataset
220 0
聚合操作_多维聚合_GroupedDataset | 学习笔记
|
SQL 分布式计算 大数据
聚合操作_多维聚合_cubeSQL | 学习笔记
快速学习聚合操作_多维聚合_cubeSQL
98 0
聚合操作_多维聚合_cubeSQL | 学习笔记
|
大数据 开发者
聚合操作_多维聚合_cube | 学习笔记
快速学习聚合操作_多维聚合_cube
61 0
聚合操作_多维聚合_cube | 学习笔记
|
关系型数据库 MySQL 数据库
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询2
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询2