和查询DSL一样,聚合(Aggregations)也拥有一种可组合(Composable)的语法:独立的功能单元可以被混合在一起来满足你的需求。这意味着需要学习的基本概念虽然不多,但是它们的组合方式是几近无穷的。

为了掌握聚合,你只需要了解两个主要概念:

Buckets(桶):

满足某个条件的文档集合。

Metrics(指标):

为某个桶中的文档计算得到的统计信息。

就是这样!每个聚合只是简单地由一个或者多个桶,零个或者多个指标组合而成。可以将它粗略地转换为SQL:

SELECT COUNT(color)
FROM table
GROUP BY color

以上的COUNT(color)就相当于一个指标。GROUP BY color则相当于一个桶。

桶和SQL中的组(Grouping)拥有相似的概念,而指标则与COUNT(),SUM(),MAX()等相似。

让我们仔细看看这些概念。

桶(Buckets)

一个桶就是满足特定条件的一个文档集合:

  • 一名员工要么属于男性桶,或者女性桶。
  • 城市Albany属于New York州这个桶。
  • 日期2014-10-28属于十月份这个桶。

随着聚合被执行,每份文档中的值会被计算来决定它们是否匹配了桶的条件。如果匹配成功,那么该文档会被置入该桶中,同时聚合会继续执行。

桶也能够嵌套在其它桶中,能让你完成层次或者条件划分这些需求。比如,Cincinnati可以被放置在Ohio州这个桶中,而整个Ohio州则能够被放置在美国这个桶中。

ES中有很多类型的桶,让你可以将文档通过多种方式进行划分(按小时,按最流行的词条,按年龄区间,按地理位置,以及更多)。但是从根本上,它们都根据相同的原理运作:按照条件对文档进行划分。

指标(Metrics)

桶能够让我们对文档进行有意义的划分,但是最终我们还是需要对每个桶中的文档进行某种指标计算。分桶是达到最终目的的手段:提供了对文档进行划分的方法,从而让你能够计算需要的指标。

多数指标仅仅是简单的数学运算(比如,min,mean,max以及sum),它们使用文档中的值进行计算。在实际应用中,指标能够让你计算例如平均薪资,最高出售价格,或者百分之95的查询延迟。

将两者结合起来

一个聚合就是一些桶和指标的组合。一个聚合可以只有一个桶,或者一个指标,或者每样一个。在桶中甚至可以有多个嵌套的桶。比如,我们可以将文档按照其所属国家进行分桶,然后对每个桶计算其平均薪资(一个指标)。

因为桶是可以嵌套的,我们能够实现一个更加复杂的聚合操作:

  1. 将文档按照国家进行分桶。(桶)
  2. 然后将每个国家的桶再按照性别分桶。(桶)
  3. 然后将每个性别的桶按照年龄区间进行分桶。(桶)
  4. 最后,为每个年龄区间计算平均薪资。(指标)

此时,就能够得到每个<国家,性别,年龄>组合的平均薪资信息了。它可以通过一个请求,一次数据遍历来完成!

elasticsearch api中的Buckets(桶)及Metrics(指标)相关推荐

  1. [Elasticsearch] 聚合中的重要概念 - Buckets(桶)及Metrics(指标)

    本章翻译自Elasticsearch官方指南的Aggregations-High-level Concepts一章. 高层概念(High-Level Concepts) 和查询DSL一样,聚合(Agg ...

  2. 【Elasticsearch】在 Elastic Cloud 上的 Elasticsearch 服务中,如何针对日志和指标用例确定热温架构的规模

    1.概述 转载:在 Elastic Cloud 上的 Elasticsearch 服务中,如何针对日志和指标用例确定热温架构的规模 主要是需要翻墙,比较麻烦. 希望深入了解 Amazon Elasti ...

  3. elasticsearch api中的Bulk API操作

    在elasticsearch中bulk的概念,其实和sql中的group by有异曲同工的作用. The bulk API allows one to index and delete several ...

  4. elasticsearch api中的Multi Get API操作

    官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-multi-get.html Th ...

  5. elasticsearch api中的Delete By Query API操作

    官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-delete-by-query.h ...

  6. elasticsearch api中的delete操作

    官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-delete.html The d ...

  7. elasticsearch api中的get操作

    官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-index.html The ge ...

  8. ElasticSearch中什么是桶(bucket)?什么是度量(metrics)?

    什么是桶(bucket)?什么是度量(metrics)? ​ 桶,是按照某种方式对数据进行分组,每一组数据在ES中称为一个桶,例如我们根据国籍对人划分,可以得到中国桶.英国桶,日本桶--或者我们按照年 ...

  9. 【Elasticsearch】Elasticsearch中 aggs (桶)聚合查询和进行二次聚合查询

    [Elasticsearch]Elasticsearch中 aggs (桶)聚合查询和进行二次聚合查询 Bucket aggregationsedit Bucket aggregations don' ...

最新文章

  1. 修改注册表真正的提高网速
  2. HashMap的工作原理
  3. Qt 读取XML文档的简单示例
  4. HTML的格式化应用
  5. 【Keil】Keil5无法更改背景色和字体解决方案
  6. 解决python中 .to_csv() 的乱码问题
  7. Oracle Rownum 伪列详解
  8. AIDL 发生异常的原因 Android java.lang.SecurityException: Binder invocation to an incorrect interface...
  9. Axure模板库(2)-注册登录
  10. 联想z400linux调节屏幕亮度,联想z400屏幕亮度调节方法
  11. 免费企业邮箱: Google企业邮箱的申请
  12. actions的使用详解
  13. linux系统的wps办公软件,wps32位/64位linux版办公软件-WPS Office 2019 For Linux下载V11.1.0.10161官方版-西西软件下载...
  14. 苹果免密支付怎么关闭_有人苹果手机被盗刷了!那是设置有问题...
  15. Spring_Ioc基本配置使用(基于xml)
  16. 公告:CSDN个人空间即将改版
  17. JQuery入门学习教程
  18. 冯 诺依曼与计算机的故事,计算机之父冯·诺依曼的故事
  19. 佳能MG2580S打印机进纸不顺畅维修
  20. 抖音矩阵系统源码定制。look here

热门文章

  1. 为什么java容器能在for each中遍历(Map除外)
  2. Web前端开发笔记——第二章 HTML语言 第五节 图像标签
  3. python操作系统接口错误_Python os模块和sys模块 操作系统的各种接口
  4. 虚拟局域网Vlan与单臂路由、三层交换、链路聚合技术
  5. Mac技巧之查看苹果电脑 Mac OS X 系统是否开启 64 位运算,以及设置 32/64 位模式的方法
  6. 割平面法只能求解纯整数规划吗_离散规划 解法
  7. java在线教程_如何自学java-已拿阿里25k offer
  8. ckks方案优化最好的_网站优化关键词怎么选?好的关键词长什么样?
  9. mysql innodb 内存_MySQL的innodb和内存
  10. linux编译ace tao,CentOS环境下ACE编译指南