博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
aggregations 详解1(概述)
阅读量:4309 次
发布时间:2019-06-06

本文共 1991 字,大约阅读时间需要 6 分钟。

aggregation分类

aggregations —— 聚合,提供了一种基于查询条件来对数据进行分桶、计算的方法。有点类似于 SQL 中的 group by 再加一些函数方法的操作。

聚合可以嵌套,由此可以组成复杂的操作(Bucketing聚合可以包含sub-aggregation)。

聚合整体上可以分为 3 类:

1. Bucketing:桶分聚合:

  • 此类聚合执行的是对文档分组的操作,把满足相关特性的文档分到一个桶里,即桶分。输出结果往往是一个个包含多个文档的桶。
  • 此类聚合会有一个关键字(field、script),以及一些桶分(分组)的判断条件。执行聚合操作时候,文档会判断每一个分组条件,如果满足某个,该文档就会被分为该组(fall in)。

2. Metric:指标聚合:

  • 此类聚合是对文档进行一些权值计算(比如求所有文档某个字段的max值)。输出结果往往是文档的权值,相当于为文档添加了一些统计信息。
  • 此类聚合基于特定字段(field)或脚本值(generated using scripts),计算聚合中文档的权值。

3. Pipeline:管道聚合:

  • 对其它聚合操作的输出及其关联指标进行聚合。
  • 此类聚合的作用对象往往是桶,而不是文档,是一种后期对每个分桶的一些计算操作。

应用场景

对于 3 中聚合,常见的应用场景如下流程:

buckets 聚合对文档进行必要的归类(桶分) ——> metric 聚合对每个桶进行一些额外的信息计算(如:max) ——> pipeline 聚合针对所有桶做一些桶层面的统计或计算

应用示例:

{    "aggs" : {        "sales_per_month" : {            "date_histogram" : {              // bucket 聚合,按照月份进行分桶,每个月的归属一个桶                "field" : "date",                "interval" : "month"            },            "aggs": {                "sales": {                    "sum": {                       // metric 聚合,对每个桶类的 price 求和,即每月的销售额                        "field": "price"                    }                }            }        },        "max_monthly_sales": {            "max_bucket": {                 // pipeline 聚合,求所有桶中销售额 sales 最大的值                "buckets_path": "sales_per_month>sales"             }        }    }}

 

aggregation结构

聚合可以是父子(嵌套)关系聚合,buckets 聚合作为父,metric 聚合作为子。

聚合也可以是兄弟关系聚合,buckets 聚合在前,pipeline 聚合在后。

结构如下:

"aggregations" : {                                //定义聚合对象,也可用 "aggs"      "
" : { //聚合的名称,用户自定义 "
" : { //聚合类型,比如 "histogram"
//每个聚合类型都有其自己的结构定义 } [,"meta" : { [
] } ]? [,"aggregations" : { [
]+ } ]? //可以定义多个 sub-aggregation } [,"
" : { ... } ]* //定义额外的多个平级 aggregation,只有 Bucketing 类型才有意义}

 

转载于:https://www.cnblogs.com/licongyu/p/5499388.html

你可能感兴趣的文章
Redis项目实战---应用及理论(二)---Redis集群原理
查看>>
VMware vSphere API开发(一)---vSphere 体系核心概念
查看>>
java String 的比较
查看>>
将String数字字符转为整型
查看>>
【转】 Java中equals和==的区别
查看>>
idea导入maven项目时需要注意
查看>>
nginx部署前端项目的一些配置【刚入门】
查看>>
java 日期格式化 将String日期重新格式化成String型【转】
查看>>
Linux下python安装升级详细步骤 | Python2 升级 Python3
查看>>
阿里云CentOS安装图形化界面
查看>>
SpringBoot nohup启动
查看>>
PHP pclzip.php 解压中文乱码
查看>>
Jenkins安装 maven插件
查看>>
数学好玩 沛沛猜想
查看>>
银联号
查看>>
银行开发平台
查看>>
Linux网络配置
查看>>
Linux开机、重启、和用户登录注销
查看>>
Linux运行级别
查看>>
MySQL逻辑架构简介
查看>>