写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
主要内容包括:

  1. 聚合的两个核心概念:桶(bucket)和指标(metric)
  2. 桶和指标的深入理解
  3. 示例说明

---------------------------------------------------------------------

1、聚合的两个核心概念

  在Elasticsearch的聚合中需要掌握两个核心的概念:桶(bucket)、指标(metric)

    桶(bucket): 满足特定条件的文档的集合

    指标(metric): 对桶内的文档进行聚合分析的操作

  (ps:每个聚合都是一个或者多个桶和零个或者多个指标的组合。)

翻译成粗略的SQL语句来解释的话:

SELECT COUNT(color)  ---> 相当于指标

FROM table

GROUP BY color  --->2  相当于桶

桶在概念上类似于SQL的分组(GROUP BY),而指标则类似于COUNT()、SUM()、MAX()等统计方法。

---------------------------------------------------------------------

2、桶和指标的深入理解

(1)桶  

  a、简单来说桶就是满足特定条件的文档的集合。

  b、当聚合开始被执行,每个文档里面的值通过计算来决定符合哪个桶的条件,如果匹配到,文档将放入相应的桶并接着开始聚合操作。

  c、桶也可以被嵌套在其他桶里面。

(2)指标

  a、桶能让我们划分文档到有意义的集合,但是最终我们需要的是对这些桶内的文档进行一些指标的计算。分桶是一种达到目的地的手段:它提供了一种给文档分组的方法来让我们可以计算感兴趣的指标。

  b、大多数指标是简单的数学运算(如:最小值、平均值、最大值、汇总),这些是通过文档的值来计算的。

(3)桶和指标的组合

  聚合是由桶和指标组成的。聚合可能只有一个桶,可能只有一个指标,或者可能两个都有。也有可能一些桶嵌套在其他桶里面。

---------------------------------------------------------------------

3、举例说明

比如有如下的数据:

  city  name

  北京  小李

  北京  小王

  上海  小张

  上海    小丽

  上海  小陈

基于city来划分buckets的话,可以划分出两个bucket:一个是北京bucket、一个是上海bucket

  北京bucket:包含了2个人,小李、小王

  上海bucket:包含了3个人,小张、小丽、小陈

按照某个字段进行bucket划分,那个字段的值相同的那些数据,就会被划分到一个bucket中。当我们有了一堆bucket之后,就可以对每个bucket中的数据聚合分析了,比如说计算一个bucket内所有数据的数量 ,或者计算一个bucket内所有数据的平均值、最大值、最小值。

metric : 就是对一个bucket执行的某种聚合分析的操作,比如说求平均值、最大值、最小值 。

上面利用elasticsearch的分组,可以转化成对应的sql语句如下:

  select count(*) from access_log group by user_id

其中:bucket 相当于 group by user_id -->那些user_id相同的数据,就会被划分到一个bucket中

   metric 相当于 count(*) -->对每个user_id bucket中所有的数据计算一个数量  

elasticsearch聚合--桶(Buckets)和指标(Metrics)的概念的更多相关文章

  1. elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg

    分析 Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计.它很像SQL中的GROUP BY但是功能更强大. 举个例子,让我们找到所有职员中最大 ...

  2. ElasticSearch聚合(转)

    ES之五:ElasticSearch聚合 前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提 ...

  3. ElasticSearch聚合

    前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提取统计指标时变得游刃有余.同样的工作,你在 ...

  4. ElasticSearch聚合分析

    聚合用于分析查询结果集的统计指标,我们以观看日志分析为例,介绍各种常用的ElasticSearch聚合操作. 目录: 查询用户观看视频数和观看时长 聚合分页器 查询视频uv 单个视频uv 批量查询视频 ...

  5. ES之五:ElasticSearch聚合

    前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提取统计指标时变得游刃有余.同样的工作,你在 ...

  6. ElasticSearch 聚合函数

    一.简单聚合 桶 :简单来说就是满足特定条件的文档的集合. 指标:大多数 指标 是简单的数学运算(例如最小值.平均值.最大值,还有汇总),这些是通过文档的值来计算. 桶能让我们划分文档到有意义的集合, ...

  7. ElasticSearch聚合分析API——非常详细,如果要全面了解的话,最好看这个

    转自:http://www.tianyiqingci.com/2016/04/11/esaggsapi/ 前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregatio ...

  8. Elasticsearch聚合问题

    在测试Elasticsearch聚合的时候报了一个错误.具体如下: GET /megacorp/employee/_search { "aggs": { "all_int ...

  9. elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)

    一.聚合分析简介 1. ES聚合分析是什么? 聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最大值.最小值,计算和.平均值等.ES作为 ...

随机推荐

  1. python设计模式之内置装饰器使用(四)

    前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰 ...

  2. cocos2d-x android 添加新场景报错: undefined reference to `vtable for XXX'

    转载自 居家懒人 http://www.cnblogs.com/JD85/archive/2012/09/17/2688128.html 加入写了新场景SecondScene,结果在cpp文件里类名地 ...

  3. 关于"轉淚點"与"轉捩點"

    经常看台湾偶像剧或台湾综艺节目的人,一定听过"转泪点"这个词,虽然我一直不知道这三个字具体是怎么写, 但其意思很容易明白,就是"转折点"的意思.今天无聊在看凤凰 ...

  4. Python语言库pyttsx3

    这是一个文字转语音的python模块. 1. macos下安装的时候出现问题:  后来发现,Foundation, AppKit, PyObjCTools都不存在,主要原因是缺少依赖模块pyobjc, ...

  5. CentOS7.4 安装 oracle12c

    安装依赖 yum install -y binutils.x86_64 compat-libcap1.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc ...

  6. 报错:Cobbler check 时报错

    报错:[root@test88 ~]# cobbler checkTraceback (most recent call last):  File "/usr/bin/cobbler&quo ...

  7. Nginx源码分析--epoll模块

    Nginx采用epoll模块实现高并发的网络编程,现在对Nginx的epoll模块进行分析. 定义在src/event/modules/ngx_epoll_module.c中 1. epoll_cre ...

  8. Windows内核读书笔记——SEH结构化异常处理

    SEH是对windows系统中的异常分发和处理机制的总称,其实现分布在很多不同的模块中. SEH提供了终结处理和异常处理两种功能. 终结处理保证终结处理块中的程序一定会被执行 __try { //要保 ...

  9. CVE-2012-0158个人分析

    CVE-2012-0158是一个比较有名的老漏洞了,这次从论坛上找到一个poc文件,利用这个poc来分析CVE-2012-0158漏洞的形成. http://bbs.pediy.com/showthr ...

  10. Eolinker——前置用例返回的reponse值进行传递

    如下补充均是Eolinker的文档中未说明的部分 示例:将login接口reponse中的mobile的值作为参数,传递给”重置密码”的请求体“code" 1.打开”前置用例“,先点击左上角 ...