1、什么是聚合分析?

  答:聚合分析,英文为Aggregation,是es除搜索功能外提供的针对es数据做统计分析的功能。特点如下所示:

    a、功能丰富,提供Bucket、Metric、Pipeline等多种分析方式,可以满足大部分的分析需求。
    b、实时性高,所有的计算结果都是即时返回的,而hadoop等大数据系统一般都是T+1级别的。

2、聚合分析的分类。为了便于理解,es将聚合分析主要分为如下4类。

  答:a、Bucket,分桶类型,类似SQL语法中的group bu语法。
    b、Metric,指标分析类型,如计算最大值,最小值,平均值等等。
    c、Pipeline,管道分析类型,基于上一级的聚合分析结果进行再分析。
    d、Matrix,矩阵分析类型。

3、Metric聚合分析的详细理解。主要分为如下两类。

  答:a、单值分析,只输出一个分析结果。min(最小值)、max(最大值)、avg(平均值)、sum(总和)、cardinality(计算数目的,类似sql中的distinct count)。
    b、多值分析,输出多个分析结果。stats(多样统计分析,可以一次性得到最小值,最大值,平均值,中值等等)、extended stats、percentile(百分位数的统计)、percentile rank、top hits(排在前面的结果列表)。

4、Metric聚合分析中单值分析的使用,如下所示:

返回数值类字段的最小值。

返回数值类字段的最大值、返回数值类字段的平均值。

返回数值字段的总和,一次返回多个聚合结果。

cardinality,意思为集合的势,或者基数,是指不同数值的个数,类似sql中的distinct count概念。

5、Metric聚合分析中多值分析的使用。如下所示:

多值分析之Stats,返回一系列数值类型的统计值,包含min、max、avg、sum和count。
多值分析之Extended Stats,对stats的扩展,包含了更多的统计数据,如方差,标准差等等。

多值分析之percentile,百分位数统计,percentiles是关键词。

多值分析之top hits,一般用于分桶后获取该桶内最匹配的顶部文档列表,即详情数据。

5、Bucket,分桶类型,类似SQL语法中的group bu语法。Bucked,意为桶,即按照一定的规则将文档分配到不同的桶中,达到分类分析的目的。按照Bucket的分桶策略,常见的Bucket聚合分析如下所示。Terms、Range、Date Range、Histogram、Date Histogram。

Bucket聚合分析之Terms,该分桶策略最简单了,直接按照term来分桶,如果是text类型,则按照分词后的结果分桶。

Bucket聚合分析之Range,通过指定数值的范围来设定分桶规则。

Bucket聚合分析之Date Range,通过指定日期的范围来设定分桶规则。

Bucket聚合分析之Histogram,直方图,以固定间隔的策略来分割数据。

Bucket聚合分析之Date Histogram,针对日期的直方图或者柱状图,是时许数据分析中常用的聚合分析类型。

6、bucket和metric聚合分析结合使用。bucket和metric聚合分析整合,Bucket聚合分析允许通过添加子分析来进一步进行分析,该子分析可以是Bucket也可以是Metric。这也使得es的聚合分析能力变得异常强大。

bucket和metric聚合分析整合,分桶后进行数据分析。

7、Pipeline聚合分析,针对聚合分析的结果再次进行聚合分析,而且支持链式调用。所有的Pipeline都会存在buckets_path关键词的。指定的是这个Pipeline聚合分析要去分析上面的哪一个聚合分析的结果。

Pipeline的分析结果会输出到原结果中,根据输出位置的不同,分为以下两类。
  a、Parent结果内嵌到现有的聚合分析结果中,Derivative(求导数)、Moving Average(移动平均)、Cumulative Sum(累计求和)。
  b、Sibling结果与现有聚合分析结果同级。Max/Min/Avg/Sum Bucket(即Max Bucket,Min Bucket,Avg Bucket,Sum Bucket),Stats/Extended Stats Bucket(Stats  Bucket,Extended Stats Bucket),Percentiles Bucket。

8、Sibling结果与现有聚合分析结果同级,下面展示的找出所有Bucket中值最小的Bucket名称和值。如果是最大、平均值、求和,将min_bucket换成max_bucket、avg_bucket、sum_bucket即可。

如果是Stats  Bucket就是对前面的结果进行多值分。

如果是Extended Stats Bucket就是对前面的结果进行多指标多值分析。

如果是Percentiles Bucket就是分析前面的聚合分析输出的结果。使用百分比进行展示。只要将min_bucket换成对应的bucket即可。

9、Parent结果内嵌到现有的聚合分析结果中,所在位置和所要分析的同一级,Derivative(求导数)、Moving Average(移动平均)、Cumulative Sum(累计求和)。

Pipeline聚合分析Parent之Derivative。计算Bucket值的导数。

Pipeline聚合分析Parent之moving_avg。计算Bucket值的移动平均值。

Pipeline聚合分析Parent之cumulative_sum。计算Bucket值的累计加和。

10、Elasticsearch聚合分析的作用范围,es聚合分析默认作用范围是query的结果集,可以通过如下的方式改变其作用范围。filer、post_filter、global。

filter为某个聚合分析设定过滤条件,从而在不更改整体query语句的情况下修改了作用范围。

post-filter作用于文档过滤,但在聚合分析后生效。

global,无视query过滤条件,基于全部文档进行分析。 在做整体和部分之间的对比的时候就可以使用global了哦。

11、Elasticsearch的排序。可以使用自带的关键数据进行排序。比如,_count文档数、_key按照key值排序。可以使用order关键词进行排序操作。

更深层次的嵌套,借用聚合分析的数值进行排序,必须接子聚合分析的结果进行排序。

再牛逼的案例,理论,都没有官网的牛逼,下面贴一下,如何去官网学习。

找到这里,自己可以巴拉巴拉,看自己需要的版本,对应的知识点。

作者:别先生

博客园:https://www.cnblogs.com/biehongli/

如果您想及时得到个人撰写文章以及著作的消息推送,可以扫描上方二维码,关注个人公众号哦。

Elasticsearch 6.x版本全文检索学习之聚合分析入门的更多相关文章

  1. Elasticsearch 6.x版本全文检索学习之分布式特性介绍

    1.Elasticsearch 6.x版本全文检索学习之分布式特性介绍. 1).Elasticsearch支持集群默认,是一个分布式系统,其好处主要有两个. a.增大系统容量,如内存.磁盘.使得es集 ...

  2. Elasticsearch 6.x版本全文检索学习之Search API

    Elasticsearch 6.x版本全文检索学习之Search API. 1).Search API,实现对es中存储的数据进行查询分析,endpoind为_search,如下所示. 方式一.GET ...

  3. Elasticsearch 6.x版本全文检索学习之数据建模

    1.什么是数据建模. 答:数据建模,英文为Data Modeling,为创建数据模型的过程.数据模型Data Mdel,对现实世界进行抽象描述的一种工具和方法,通过抽象的实体及实体之间联系的形式去描述 ...

  4. Elasticsearch 6.x版本全文检索学习之倒排索引与分词、Mapping 设置

    Beats,Logstash负责数据收集与处理.相当于ETL(Extract Transform Load).Elasticsearch负责数据存储.查询.分析.Kibana负责数据探索与可视化分析. ...

  5. Elasticsearch 6.x版本全文检索学习之集群调优建议

    1.系统设置要到位,遵照官方建议设置所有的系统参数. https://www.elastic.co/guide/en/elasticsearch/reference/6.7/setup.html 部署 ...

  6. Elasticsearch 之聚合分析入门

    本文主要介绍 Elasticsearch 的聚合功能,介绍什么是 Bucket 和 Metric 聚合,以及如何实现嵌套的聚合. 首先来看下聚合(Aggregation): 什么是 Aggregati ...

  7. ElasticStack学习(八):ElasticSearch索引模板与聚合分析初探

    一.Index Template与Dynamic Template的概念 1.Index Template:它是用来根据提前设定的Mappings和Settings,并按照一定的规则,自动匹配到新创建 ...

  8. Elasticsearch全文检索学习

    ElasticSearch官方网址:https://www.elastic.co ElasticSearch官方网址(中文):https://www.elastic.co/cn/ Elasticsea ...

  9. Elasticsearch学习笔记(三)聚合分析Agg

    一.设置fielddata PUT /index/_mapping/type {     "properties":{          "fieldName" ...

随机推荐

  1. mysql5.7搭建主从库

    #MYSQL单节点的mysql远远不能满于生成,以防止生产服务器宕机,磁盘空间溢满等种种原因,需要有一个备用数据库, 这时候主从库是不错的选择,在是数据库集群中也起到了很大的作用 #MySQL 主从复 ...

  2. SQL- SQL插入与更新删除

    一 前言 经过之前的 [SQL]-SQL介绍, [SQL]- SQL检索阶段一, [SQL]-sql检索阶段二 的三篇文章你已经学会的sql的相关概念和如何查询数据库,这篇文章主要后续对数据库表的进入 ...

  3. OPCode 详解

    OpCode 操作码(Operation Code, OPCode):描述机器语言指令中,指令要执行某种操作的机器码 OPCode在不同的场合中通常具有不同的含义,例如PHP虚拟机(Zend VM). ...

  4. WPF布局容器

    1.StackPanel:堆栈面板,通过Orientation属性设置子元素的布局排列方向为“Vertical”(垂直)和“Horizontal”(水平),不写其默认值为“Vertical”,当设置为 ...

  5. vue & nodejs jwt 的基于token身份验证

    现在比较流行的验证方式,是带着token的登录验证 原理 1. 登陆时,客户端发送用户名密码 2. 服务端验证用户名密码是否正确,校验通过就会生成一个有时效的token串,发送给客户端 3. 客户端储 ...

  6. 常见SQL编写和优化

    常见的SQL优化方式 对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by 涉及的列上建立索引. 应尽量避免在 where 子句中对字段进行null 值判断,否则将导致引擎放弃 ...

  7. C#开发微信小程序(四)

    导航:C#开发微信小程序系列 关于小程序项目结构,框架介绍,组件说明等,请查看微信小程序官方文档,关于以下贴出来的代码部分我只是截取了一些片段,方便说明问题,如果需要查看完整源代码,可以在我的项目库中 ...

  8. 知道内存中一个图片的指针IntPtr大小,转换成图片显示

    //nSize 为总长度//pImageData 为总数据//nImageSize //一个图片的长度 byte[] _bytes = new byte[nImageSize];// //IntPtr ...

  9. C# -- 使用缓冲区进行文件下载操作

    C# -- 使用缓冲区进行文件下载操作 1. 为避免下载超大文件占用内存资源,文件下载使用缓冲区,一点一点读取文件资源. string str0 = @"ftp://localhost:21 ...

  10. Java实现抢红包功能

    采用多线程模拟多人同时抢红包.服务端将玩家发出的红包保存在一个队列里,然后用Job定时将红包信息推送给玩家.每一批玩家的抢红包请求,其实操作的都是从队列中弹出的第一个红包元素,但当前的红包数量为空的时 ...