ElasticSearch 聚合统计

在这里插入图片描述

聚合统计

度量聚合:求字段的平均值,最小值,最大值,总和等
桶聚合:将文档分成不同的桶,桶的划分可以根据字段的值,范围,日期间隔
管道聚合:在桶聚合的结果上执行进一步计算

进行聚合的语法如下

{
   
  "aggs": {
   
    "<agg_name>": {
   
      "<agg_type>": {
   
        "field": "<field_name>"
      }
    }
  }
}

聚合也可以进行嵌套

{
   
  "aggs": {
   
    "<agg_name>": {
   
      "<agg_type>": {
   
        "field": "<field_name>"
      },
      "aggs": {
   
        "<agg_child_name>": {
   
          "<agg_type>": {
   
            "field": "<field_name>"
          }
        }
      }
    }
  }
}

度量聚合(Metrics aggregations)

平均值聚合

聚集被命名为 avg_age

POST user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "aggs": {
   "avg_age": {
   "avg": {
   "field": "age"}}}
}

最小值 / 最大值 聚合

POST user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "aggs": {
   "max_age": {
   "max": {
   "field": "age"}}}
}
POST user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "aggs": {
   "min_age": {
   "min": {
   "field": "age"}}}
}

求和聚合

POST user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "aggs": {
   "sum_age": {
   "sum": {
   "field": "age"}}}
}

桶聚合(Bucket aggregations)

词条聚合(Terms aggregation)

按照某个字段的值进行聚合

POST user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "aggs": {
   "group_by_age": {
   "terms": {
   "field": "age"}}}
}

范围聚合(Range aggregation)

按照某个字段的范围进行聚合,from提供区间下界(包括),to提供区间上界(不包括)

POST user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "aggs": {
   
    "age_ranges":{
   
      "range": {
   
        "field": "age",
        "ranges": [
          {
    "to": 10 },
          {
    "from": 10, "to": 20 },
          {
    "from": 20 }
        ]
      }
    }
  }
}

管道聚合(Pipeline aggregations)

平均桶聚合(Average bucket aggregation)

POST user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "aggs": {
   
    "age_ranges": {
   
      "range": {
   
        "field": "age",
        "ranges": [
          {
    "to": 10 }, {
    "from": 10, "to": 20 }, {
    "from": 20 }
        ]
      },
      "aggs": {
   
        "age_avg": {
   "avg": {
   "field": "age"}}
      }
    },
    "range_avg": {
   
      "avg_bucket": {
   "buckets_path": "age_ranges>age_avg"}
    }
  }
}

对年龄分组,并求分组后的平均值,然后对分组的平均值再求平均值

求和桶聚集(Sum bucket aggregation)

POST user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "aggs": {
   
    "age_ranges": {
   
      "range": {
   
        "field": "age",
        "ranges": [
          {
    "to": 10 }, {
    "from": 10, "to": 20 }, {
    "from": 20 }
        ]
      },
      "aggs": {
   
        "age_sum": {
    "sum": {
   "field": "age"} }
      }
    },
    "range_sum": {
   
      "sum_bucket": {
    "buckets_path": "age_ranges>age_sum" }
    }
  }
}

对年龄分组,并求分组后的和,然后对分组的和再求和

参考博客

[1]https://www.elastic.co/guide/en/elasticsearch/reference/8.11/search-aggregations.html
[2]https://juejin.cn/post/7103514121642983455

相关推荐

  1. SpringBoot ElasticSearch 聚合统计

    2023-12-28 02:30:02       33 阅读
  2. SpringBoot ElasticSearch 聚合统计

    2023-12-28 02:30:02       32 阅读
  3. python elasticsearch 日期聚合

    2023-12-28 02:30:02       26 阅读
  4. SpringBoot ElasticSearch 聚合排序

    2023-12-28 02:30:02       31 阅读
  5. ElasticSearch聚合查询

    2023-12-28 02:30:02       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 02:30:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 02:30:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 02:30:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 02:30:02       20 阅读

热门阅读

  1. 面向对象程序设计(泛型)

    2023-12-28 02:30:02       37 阅读
  2. 【vscode插件】之插件图标设置

    2023-12-28 02:30:02       44 阅读
  3. C/C++ const

    2023-12-28 02:30:02       44 阅读
  4. Linux Ubuntu安装nodejs

    2023-12-28 02:30:02       38 阅读
  5. arm day7

    arm day7

    2023-12-28 02:30:02      35 阅读
  6. python虚拟环境及其在项目实践中的应用

    2023-12-28 02:30:02       41 阅读
  7. Sqlserver数据库触发器sql案例

    2023-12-28 02:30:02       39 阅读
  8. Redis——IO多路复用

    2023-12-28 02:30:02       42 阅读
  9. CTE和递归查询

    2023-12-28 02:30:02       37 阅读
  10. Best Arm Identification in Batched Multi-armed Bandit Problems

    2023-12-28 02:30:02       32 阅读