elasticsearch api中的Buckets(桶)及Metrics(指标)
和查询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的查询延迟。
将两者结合起来
一个聚合就是一些桶和指标的组合。一个聚合可以只有一个桶,或者一个指标,或者每样一个。在桶中甚至可以有多个嵌套的桶。比如,我们可以将文档按照其所属国家进行分桶,然后对每个桶计算其平均薪资(一个指标)。
因为桶是可以嵌套的,我们能够实现一个更加复杂的聚合操作:
- 将文档按照国家进行分桶。(桶)
- 然后将每个国家的桶再按照性别分桶。(桶)
- 然后将每个性别的桶按照年龄区间进行分桶。(桶)
- 最后,为每个年龄区间计算平均薪资。(指标)
此时,就能够得到每个<国家,性别,年龄>组合的平均薪资信息了。它可以通过一个请求,一次数据遍历来完成!
elasticsearch api中的Buckets(桶)及Metrics(指标)相关推荐
- [Elasticsearch] 聚合中的重要概念 - Buckets(桶)及Metrics(指标)
本章翻译自Elasticsearch官方指南的Aggregations-High-level Concepts一章. 高层概念(High-Level Concepts) 和查询DSL一样,聚合(Agg ...
- 【Elasticsearch】在 Elastic Cloud 上的 Elasticsearch 服务中,如何针对日志和指标用例确定热温架构的规模
1.概述 转载:在 Elastic Cloud 上的 Elasticsearch 服务中,如何针对日志和指标用例确定热温架构的规模 主要是需要翻墙,比较麻烦. 希望深入了解 Amazon Elasti ...
- elasticsearch api中的Bulk API操作
在elasticsearch中bulk的概念,其实和sql中的group by有异曲同工的作用. The bulk API allows one to index and delete several ...
- elasticsearch api中的Multi Get API操作
官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-multi-get.html Th ...
- elasticsearch api中的Delete By Query API操作
官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-delete-by-query.h ...
- elasticsearch api中的delete操作
官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-delete.html The d ...
- elasticsearch api中的get操作
官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-index.html The ge ...
- ElasticSearch中什么是桶(bucket)?什么是度量(metrics)?
什么是桶(bucket)?什么是度量(metrics)? 桶,是按照某种方式对数据进行分组,每一组数据在ES中称为一个桶,例如我们根据国籍对人划分,可以得到中国桶.英国桶,日本桶--或者我们按照年 ...
- 【Elasticsearch】Elasticsearch中 aggs (桶)聚合查询和进行二次聚合查询
[Elasticsearch]Elasticsearch中 aggs (桶)聚合查询和进行二次聚合查询 Bucket aggregationsedit Bucket aggregations don' ...
最新文章
- 修改注册表真正的提高网速
- HashMap的工作原理
- Qt 读取XML文档的简单示例
- HTML的格式化应用
- 【Keil】Keil5无法更改背景色和字体解决方案
- 解决python中 .to_csv() 的乱码问题
- Oracle Rownum 伪列详解
- AIDL 发生异常的原因 Android java.lang.SecurityException: Binder invocation to an incorrect interface...
- Axure模板库(2)-注册登录
- 联想z400linux调节屏幕亮度,联想z400屏幕亮度调节方法
- 免费企业邮箱: Google企业邮箱的申请
- actions的使用详解
- linux系统的wps办公软件,wps32位/64位linux版办公软件-WPS Office 2019 For Linux下载V11.1.0.10161官方版-西西软件下载...
- 苹果免密支付怎么关闭_有人苹果手机被盗刷了!那是设置有问题...
- Spring_Ioc基本配置使用(基于xml)
- 公告:CSDN个人空间即将改版
- JQuery入门学习教程
- 冯 诺依曼与计算机的故事,计算机之父冯·诺依曼的故事
- 佳能MG2580S打印机进纸不顺畅维修
- 抖音矩阵系统源码定制。look here
热门文章
- 为什么java容器能在for each中遍历(Map除外)
- Web前端开发笔记——第二章 HTML语言 第五节 图像标签
- python操作系统接口错误_Python os模块和sys模块 操作系统的各种接口
- 虚拟局域网Vlan与单臂路由、三层交换、链路聚合技术
- Mac技巧之查看苹果电脑 Mac OS X 系统是否开启 64 位运算,以及设置 32/64 位模式的方法
- 割平面法只能求解纯整数规划吗_离散规划 解法
- java在线教程_如何自学java-已拿阿里25k offer
- ckks方案优化最好的_网站优化关键词怎么选?好的关键词长什么样?
- mysql innodb 内存_MySQL的innodb和内存
- linux编译ace tao,CentOS环境下ACE编译指南