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

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

2015-01-04 来源: http://blog.csdn.net/dm_vincent/article/details/42387161

本章翻译自Elasticsearch官方指南的Aggregations-High-level Concepts一章。

高层概念(High-Level Concepts)

和查询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. 最后,为每个年龄区间计算平均薪资。(指标)

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

时间: 2024-10-10 10:25:46

[Elasticsearch] 聚合中的重要概念 - Buckets(桶)及Metrics(指标)的相关文章

[Elasticsearch] 聚合中的重要概念 - Buckets(桶)及Metrics(zh)

本章翻译自Elasticsearch官方指南的Aggregations-High-level Concepts一章. 高层概念(High-Level Concepts) 和查询DSL一样,聚合(Aggregations)也拥有一种可组合(Composable)的语法:独立的功能单元可以被混合在一起来满足你的需求.这意味着需要学习的基本概念虽然不多,但是它们的组合方式是几近无穷的. 为了掌握聚合,你只需要了解两个主要概念: Buckets(桶): 满足某个条件的文档集合. Metrics(指标):

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

分析 Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计.它很像SQL中的GROUP BY但是功能更强大. 举个例子,让我们找到所有职员中最大的共同点(兴趣爱好)是什么: GET .monitoring-es-6-2018.08.16/_search{ "aggs": { "all_interests": { "terms": { "field": "sour

ElasticSearch - 聚合 aggs

聚合概念ElasticSearch除了致力于搜索之外,也提供了聚合实时分析数据的功能 如果把搜索比喻为大海捞针(从海量的文档中找出符合条件的那一个),那麽聚合就是去分析大海中的针们的特性,像是 在大海里有多少针? 针的平均长度是多少? 按照针的製造商来划分,针的长度中位值是多少? 每月加入到海中的针有多少? 这里面有异常的针麽? 因此透过聚合,我们可以得到一个数据的概览,聚合能做的是分析和总结全套的数据,而不是查找单个文档(这是搜索做的事) 聚合允许我们向数据提出一些複杂的问题,虽然他的功能完全

[Elasticsearch] 聚合的测试数据

本章翻译自Elasticsearch官方指南的Aggregation Test-Drive一章. 聚合的测试数据(Aggregation Test-Drive) 我们将学习各种聚合以及它们的语法,但是最好的学习方法还是通过例子.一旦你了解了如何思考聚合以及如何对它们进行合适的嵌套,那么语法本身是不难的. 让我们从一个例子开始.我们会建立一个也许对汽车交易商有所用处的聚合.数据是关于汽车交易的:汽车型号,制造商,销售价格,销售时间以及一些其他的相关数据. 首先,通过批量索引(Bulk-Index)

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

转自:http://www.tianyiqingci.com/2016/04/11/esaggsapi/ 前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提取统计指标时变得游刃有余.同样的工作,你在hadoop中可能需要写mapreduce或hive,在mongo中你必须得用大段的mapreduce脚本,而在ES中仅仅调用一个API就能实现了. 开始之前,提醒老司机们注意,ES原有的聚合功

ElasticSearch聚合分析

聚合用于分析查询结果集的统计指标,我们以观看日志分析为例,介绍各种常用的ElasticSearch聚合操作. 目录: 查询用户观看视频数和观看时长 聚合分页器 查询视频uv 单个视频uv 批量查询视频uv Having查询 根据 count 进行过滤 根据其它指标进行过滤 首先展示一下我们要分析的文档结构: { "video_id": 1289643545120062253, // 视频id "video_uid": 3931482202390368051, //

Elasticsearch聚合 之 Range区间聚合

Elasticsearch提供了多种聚合方式,能帮助用户快速的进行信息统计与分类,本篇主要讲解下如何使用Range区间聚合. 最简单的例子,想要统计一个班级考试60分以下.60到80分.80到100分,在ES中只要一个命令就可以轻松统计.... 更多资料参考:Elasticsearch文档翻译 聚合例子 按照前言中的例子,可以执行下面的命令: { "aggs":{ "grade_ranges":{ "range":{ "field&qu

Elasticsearch是什么以及核心概念

Elasticsearch是什么 Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎.它可以在很短的时间内存储,搜索和分析大量的数据.它通常作为具有复杂搜索场景情况下的核心发动机.我们举几个例子来说明Elasticsearch能做什么? 当你经营一家网上商店,你可以让你的客户搜索你卖的商品.在这种情况下,你可以使用Elasticsearch来存储您的整个产品目录和库存信息,为客户提供精准搜索,可以为客户推荐相关商品. 当你想收集日志或者交易数据的时候,要分析和挖掘这些数据,寻找趋

Elasticsearch聚合--Metrics初探

Elasticsearch是一款提供检索以及相关度排序的开源框架,同时,也支持对存储的文档进行复杂的的统计-聚合.kubana的图标就是基于聚合来绘制的.更多内容请参考Elasticsearch+Logstash+Kibana教程 前言 ES中的聚合被分成两大类:Metrics度量和bucket桶,metrics类似于SQL中的avg.max.min等方法,而bucket类似于group by了. 本篇就简单的介绍一下metrics的用法. metrics的聚合按照值的返回类型可以分为两种:单值