zoukankan      html  css  js  c++  java
  • elasticsearch聚合--桶(Buckets)和指标(Metrics)的概念

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

    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中所有的数据计算一个数量  

     

  • 相关阅读:
    百度地图中循环输出坐标点信息是重复的问题解决方法
    质问微软 WP8.1开发HTTPS 真费劲
    WebService 页面重定向错误
    Oracle 错误 maximum number of processes(150) exceeded 解决办法
    spring quartz定时任务 配置
    centos 7安装完后出现please make your choice from '1' to e
    centos单机安装Hadoop2.6
    centos 关闭防火墙
    CentOS 7 系统下安装gnome图形界面
    CentOS 7 ifconfig: command not found
  • 原文地址:https://www.cnblogs.com/xinhuaxuan/p/7496772.html
Copyright © 2011-2022 走看看