aggregations 详解1(概述)

摘要:
聚合分类聚合-聚合提供了一种基于查询条件存储和计算数据的方法。聚合可以是嵌套的,这可以形成复杂的操作。这种类型的聚合基于特定字段或脚本值计算聚合中文档的权重。聚合也可以是同级聚合,桶先聚合,管道后聚合//您可以定义多个子聚合}[,“”:{…}]*/定义其他多个水平聚合。只有桶类型才有意义}

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"
      "<aggregation_name>" : {                    //聚合的名称,用户自定义
          "<aggregation_type>" : {                //聚合类型,比如 "histogram"
              <aggregation_body>                  //每个聚合类型都有其自己的结构定义
          }
          [,"meta" : {  [<meta_data_body>] } ]?
          [,"aggregations" : { [<sub_aggregation>]+ } ]?    //可以定义多个 sub-aggregation
      }
      [,"<aggregation_name_2>" : { ... } ]*       //定义额外的多个平级 aggregation,只有 Bucketing 类型才有意义
}

免责声明:文章转载自《aggregations 详解1(概述)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇一起谈.NET技术,ASP.NET MVC3 基础教程 – Web Pages 1.0 狼人:Cygwin apt-cyg ”MD5 sum did not match”下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

解决cookie跨域访问

如果用户在登录(记录用户上下文信息)后在浏览器客户端上写入cookie,则只能访问与创建cookie的页面相同目录或创建cookie页面的子目录中的网页。这是因为cookie可以由其路径下的页面访问。然后,如果您想在域a中生成一个可以被域a和域B访问的cookie,则需要将cookie的域设置为.test.com;...

selenium自动化之鼠标操作

,selenium为我们提供了一个处理此类事件的类——ActionChains。ActionChains可以模拟鼠标操作,例如单击、双击、右键单击、拖动等。鼠标移动时演示页面的截图:demo1.使用鼠标移动到WriteonOver按钮的顶部。python脚本如下:读取鼠标移动代码,首先定义浏览器驱动程序,最大化窗口,打开测试页面URL,定位到测试按钮顶部,定...

登陆脚本

#!' num_ count+=1其他:lock_ input(用户名)#############1##########_###!...

SQLServer2008/2012 安装、添加sa用户和密码、多实例安装、修改端口, 重启生效

因为我们无法使用sa用户登录,所以只能使用系统登录。登录后,我们需要修改相关属性。右键单击数据库,然后单击属性。在这个sa的登录属性对话框中,我们首先需要设置这个用户的密码。由于此用户名是系统的用户,我们可以直接填写密码,然后再次确认密码。然后在对话框中,单击左上角的第二个属性服务器角色。这是您要实现的添加用户的角色。...

rz上传文件及出错解决方案

原始链接:https://blog.csdn.net/yjk13703623757/article/details/87083997单独使用rz命令时有两个问题:上载中断和文件更改。解决方案是使用rz be进行上传,并在弹出对话框中删除“UploadfilesasASCII”之前的复选框。如果使用不带参数的rz命令上传一个大文件,则在上传过程中通常会中断。很...

win server2008关闭危险端口445,135,137,138,139的方法

在Windowsserver2008系统上,有两种途经可以禁用本地端口:1、通过Windows防火墙2、通过IP安全策略一、通过Windows防火墙禁用端口:1、点击“控制面板-Windows防火墙”,确保启用了Windows防火墙。重复操作,添加135、137、138、139规则然后在新规则属性中,单击筛选器操作选项卡单击下方的添加,并且不要勾选右侧的使用...