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


目录
打赏
0
0
0
0
7
分享
相关文章
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
Elasticsearch聚合查询用于复杂数据分析,包括统计空值率。示例展示了如何计算字段`my_field`非空非零文档的百分比。查询分为三步:总文档数计数、符合条件文档数计数及计算百分比。聚合概念涵盖度量、桶和管道聚合。脚本在聚合中用于动态计算。常见聚合类型如`sum`、`avg`、`date_histogram`等。组合使用可实现多值统计、嵌套聚合和空值率计算。[阅读更多](https://zhangfeidezhu.com/?p=515)
371 0
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
DQL-分组聚合
DQL-分组聚合
41 0
ES聚合查询详解(四):管道聚合
ES聚合查询详解(四):管道聚合
591 0
ES聚合查询详解(四):管道聚合
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询2
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询
131 0
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等