资讯专栏INFORMATION COLUMN

Elasticsearch 参考指南(聚合介绍)

Youngs / 2406人阅读

摘要:聚合介绍聚合框架帮助提供基于搜索查询的聚合数据,它基于称为聚合的简单构建块,可以进行组合以构建复杂的数据摘要。指标对一组文档进行跟踪和计算指标的聚合。管道聚合其他聚合的输出及其相关指标的聚合。

聚合介绍

聚合框架帮助提供基于搜索查询的聚合数据,它基于称为聚合的简单构建块,可以进行组合以构建复杂的数据摘要。

聚合可以看作是在一组文档上构建分析信息的工作单元,执行的上下文定义了这个文档集是什么(例如,顶级聚合在搜索请求的已执行的查询/过滤器的上下文中执行)。

有许多不同类型的聚合,每个聚合都有自己的目的和输出,为了更好地理解这些类型,通常更容易将它们分为四个主要类别:

构建桶的聚合系列,其中每个桶与键和文档标准相关联,在执行聚合时,将对上下文中每个文档评估所有桶标准,当一个标准匹配时,文档被认为是“落入”相关的桶中,在聚合过程结束时,我们将得到一个桶列表 — 每个桶都有一组“属于”它的文档。

指标

对一组文档进行跟踪和计算指标的聚合。

矩阵

基于从请求的文档字段中提取的值在多个字段上操作并生成矩阵结果的聚合系列,与指标和桶聚合不同,此聚合系列还不支持脚本。

管道

聚合其他聚合的输出及其相关指标的聚合。

接下来是有趣的部分,由于每个桶都有效地定义了一个文档集(属于桶的所有文档),因此可以在桶级别上关联聚合,这些聚合将在桶上下文中执行,这就是聚合的真正威力所在:聚合可以嵌套!

桶聚合可以有子聚合(桶或指标),子聚合将被用于它们的父聚合生成的桶的计算,嵌套聚合的级别/深度没有硬性限制(可以将聚合嵌套在“父”聚合下,后者本身是另一个更高级别聚合的子聚合)。
聚合在double表示的数据上操作,因此,当在绝对值大于2^53的长度上运行时,结果可能是近似的。
构建聚合

下面的片段捕获了聚合的基本结构:

"aggregations" : {
    "" : {
        "" : {
            
        }
        [,"meta" : {  [] } ]?
        [,"aggregations" : { []+ } ]?
    }
    [,"" : { ... } ]*
}

JSON中的aggregations对象(也可以使用键aggs)保存要计算的聚合,每个聚合都与用户定义的逻辑名称相关联(例如,如果聚合计算平均价格,那么将其命名为avg_price是有意义的),这些逻辑名称还将用于惟一地标识响应中的聚合。每个聚合都有一个特定的类型(在上面的代码片段中的),通常是命名聚合body中的第一个键。每种聚合类型都定义了自己的body,具体取决于聚合的性质(例如,特定字段上的avg聚合将定义计算平均值的字段)。在聚合类型定义的同一级别上,可以选择定义一组额外的聚合,但只有在你定义的聚合具有桶的性质时,这才有意义。在这个场景中,你在桶聚合级别上定义的子聚合将用于计算由桶聚合构建的所有桶,例如,如果你在range聚合下定义了一组聚合,那么子聚合将用于你定义的范围桶计算。

值来源

一些聚合处理从聚合文档中提取的值,通常,值将从使用聚合的field键设置的特定文档字段中提取,还可以定义一个script来生成值(每个文档)。

在为聚合配置fieldscript设置时,脚本将被视为value script,普通脚本在文档级别进行评估(即脚本可以访问与文档相关的所有数据),而值脚本在级别进行评估,在这种模式下,从配置的fieldscript中提取的值被用于在这些值上应用“转换”。

在使用脚本时,还可以定义langparams设置,前者定义了使用的脚本语言(假设适当的语言在Elasticsearch中可用,默认情况下或作为插件使用),后者支持将脚本中的所有“动态”表达式定义为参数,从而使脚本在调用之间保持自身的静态(这将确保在Elasticsearch中使用缓存的已编译脚本)。

Elasticsearch使用映射中的字段类型来计算如何运行聚合并格式化响应,然而,在两种情况下,Elasticsearch无法计算出这些信息:未映射字段(例如在跨多个索引的搜索请求中,其中只有一些具有字段映射)和纯脚本。对于这些情况,可以使用value_type选项给Elasticsearch一个提示,它接受以下值:stringlong(适用于所有整数类型)、double(适用于所有小数类型,如floatscaled_float)、dateipboolean

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/34343.html

相关文章

  • Elasticsearch 参考指南(目录)

    摘要:为了防止用户覆盖中指定的索引,将此设置添加到文件中默认值为,但当设置为时,将拒绝在请求体中指定的显式索引的请求。所有都是单索引,参数接受单个索引名,或指向单个索引的别名。查询子句的行为取决于它们是用于查询上下文还是过滤器上下文。 Elasticsearch 参考指南 Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许你快速,近实时地存储,搜索和分析大量数据,它通...

    liaosilzu2007 评论0 收藏0
  • Elasticsearch 参考指南介绍

    摘要:你运行价格警报平台,允许精通价格的客户指定一条规则,例如我有兴趣购买特定的电子产品,如果小工具的价格在下个月内从任何供应商降至美元以下,我希望收到通知。 介绍 Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许你快速,近实时地存储,搜索和分析大量数据,它通常用作底层引擎/技术,为具有复杂搜索功能和要求的应用程序提供支持。 以下是Elasticsearch可用于的...

    or0fun 评论0 收藏0
  • Elasticsearch 参考指南(探索你的数据)

    摘要:参数指示使用每个文档的字段升序对结果进行排序,参数再次告诉返回漂亮的结果。我们可以在查询中同时组合,和子句,此外,我们可以在任何这些子句中组合查询来模仿任何复杂的多级布尔逻辑。上一篇修改你的数据下一篇安装 探索你的数据 样本数据集 现在我们已经了解了基础知识,让我们尝试更真实的数据集,我准备了一份关于客户银行账户信息的虚构JSON文档样本,每个文档都有以下模式: { accou...

    paulli3 评论0 收藏0
  • Elasticsearch搜索调优权威指南 (2/3)

    摘要:本系列教程旨在更进一步讨论针对及以上版本的搜索调优技术策略及建议。强制合并只读索引只读索引在合并为单一的段后将会非常受益。强制合并操作支持通过合并来减少段数量。该调用在合并完成之前将会处于阻塞状态。 本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/AAkVdzmkgdBisuQZldsnvg 英文原文:https://qbox.io/...

    wenzi 评论0 收藏0
  • Elasticsearch 参考指南(Avg聚合

    摘要:聚合一个单值指标聚合,它计算从聚合文档中提取的数值的平均值,这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。在字段中没有值的文档将与值为的文档落入同一桶中。 Avg聚合 一个单值指标聚合,它计算从聚合文档中提取的数值的平均值,这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。 假设数据由代表学生考试成绩(0到100之间)的文档组成,我们可以平均他们的分数:...

    terro 评论0 收藏0

发表评论

0条评论

Youngs

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<