ElasticSearch Aggregations(聚合)

news/2025/1/18 10:43:26/文章来源:https://www.cnblogs.com/TMesh/p/18678121

目录
  • Aggregations(聚合)
  • 构建聚合
    • 值的来源

Aggregations(聚合)

聚合框架有助于提供基于搜索查询的聚合数据。 它基于被称为聚合(aggregations)的简单构建块,可以组合这些块来构建复杂的数据摘要。
聚合可以被看作是在一组文档上构建分析信息的工作单元。 执行的上下文定义了这个文档集是什么(例如,顶级的聚合在搜索请求的已执行的 query/filter 的上下文中执行)。
有许多不同类型的聚合,每种都有自己的目的和输出。 为了更好地理解这些类型,通常更容易将它们分为四大类:

  • Bucketing
    构建桶(bucket)的一系列聚合,其中每个桶都与一个 key 和一个文档标准相关联。 执行聚合时,将在上下文中的每个文档上去评估所有的桶标准,当标准匹配时,该文档将被视为“落入”相应的桶。 在聚合过程的最后,我们将得到一个桶列表——每个桶都有一组“属于”它的文档。
  • Metric
    跟踪和计算一组文档 度量(metric) 的聚合。
  • Matrix
    对多个字段进行操作并根据从请求的文档字段中提取的值生成 矩阵(matrix) 结果的一系列聚合。 与 metric 和 bucket 聚合不同,此聚合系列尚不支持脚本。
  • Pipeline
    聚合其他聚合的输出及其相关度量的聚合
    接下来的部分才是有趣的。 由于每个桶都有效地定义了一个文档集(属于该桶的所有文档),因此可以在桶级别关联聚合,这些聚合将在该桶的上下文中执行。 这就是聚合的真正威力所在:聚合可以嵌套!

bucketing 聚合可以有子聚合(bucketing 或 metric)。 将为其父聚合生成的桶计算子聚合。 对嵌套聚合的级别/深度没有硬性限制(可以将一个聚合嵌套在一个“父”聚合下,而这个父聚合本身是另一个更高级聚合的子聚合)。
聚合在数据的 double 表示法上进行操作。 因此,在绝对值大于 2^53 的长整型数上运行时,结果可能是近似的。

构建聚合

以下代码片段体现了聚合的基本结构:

"aggregations" : {"<aggregation_name>" : {"<aggregation_type>" : {<aggregation_body>}[,"meta" : {  [<meta_data_body>] } ]?[,"aggregations" : { [<sub_aggregation>]+ } ]?}[,"<aggregation_name_2>" : { ... } ]*
}

JSON 中的 aggregations 对象(也可以使用 aggs 作为键)保存要计算的聚合。 每个聚合都与用户定义的逻辑名称(<aggregation_name>)相关联(例如,如果聚合计算平均价格,则将其命名为avg_price是有意义的)。 这些逻辑名称还将用于唯一地标识响应中的聚合。 每个聚合都有一个特定的类型(上面代码片段中的<aggregation_type>),并且通常是命名聚合体内的第一个键。 根据聚合的性质,每种类型的聚合定义自己的主体(例如,特定字段上的 avg 聚合将定义计算平均值的字段)。 在聚合类型定义的同一级别,可以选择性的定义一组附加的聚合,但这只有在你定义的聚合具有 bucketing 性质时才有意义。 在这种情况下,将为 bucketing 聚合构建的所有桶计算在 bucketing 聚合级别定义的子聚合。 例如,如果在 range 聚合下定义了一组聚合,将为定义的范围(range)桶计算子聚合。

值的来源

一些聚合处理从聚合文档中提取的值。 通常,这些值将从指定的文档字段中提取,该字段是使用聚合的 field 键设置的。 也可以定义一个 script 来生成这些值(每个文档)。
当为聚合配置了 fieldscript 设置时,脚本将被视为value script(值脚本)。 普通脚本在文档级别进行评估(即脚本可以访问与文档相关的所有数据),而值脚本(value script)value(值) 级别进行评估。 在这种模式下,从已配置的 field 中提取值,并使用 script 对这些值进行“转换”。

使用脚本时,还可以定义 langparams 设置。 前者定义了所使用的脚本语言(假设 Elasticsearch 中有合适的语言,无论是默认语言还是插件语言)。 后者支持将脚本中的所有“动态(dynamic)”表达式定义为参数,这使得脚本能够在调用之间保持静态(static)(这将确保在Elasticsearch 中使用缓存的编译过的脚本)。

Elasticsearch 使用映射(mapping)中的字段类型来确定如何运行聚合和格式化响应。 然而,在两种情况下,Elasticsearch 无法找出这些信息:未映射的字段(例如,在跨多个索引的搜索请求的情况下,只有其中一部分字段在映射中有定义) 和 纯脚本。 对于这些情况,可以使用 value_type 选项给 Elasticsearch 一个提示,该选项接受以下值:stringlong(适用于所有整数类型)、double(适用于所有十进制类型,如floatscaled_float)、dateipboolean
metrics aggregations(度量聚合)
桶(bucket)聚合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871169.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始的PHP原生反序列化漏洞

1、写在前面 OK 兄弟们,这几天一直在面试,发现很多 HR 喜欢问反序列化相关的内容,今天咱们就从最简单的 PHP 原生反序列化入手,带大家入门反序列化 2、PHP 序列化 在 PHP 中,有反序列化,就有序列化,我们先来解释一下序列化。 所谓序列化,就是将 PHP 的一个对象,序列化…

简单讲一下免杀的一个思想

这几天一直在忙,没时间学新东西,也不知道写什么,正好今天有人跟我要免杀,cs 二开的东西,这里就水一篇文章,带各位入门免杀,建立一个免杀思路。 1、什么是免杀? 首先各位需要了解一下,免杀的基本概念免杀,全称为反杀毒技术,用来使木马病毒程序逃过杀毒软件的检测免杀…

读量子霸权07光合作用

光合作用转化CO2、阳光、水为糖和氧气,对地球生命至关重要。量子计算机或能揭秘光合作用,助力高效光伏电池和作物增产。人工光合作用和“人工树叶”或对抗全球变暖,量子计算机或加速其进展。1. 光合作用 1.1. 生命起源的一幕主要戏剧便是光合作用,一个看似简单的过程1.1.1.…

关于网传微信聊天记录提取工具留痕盗取个人信息的分析

今天早上看到一篇文章,是关于一个微信聊天记录提取工具泄露个人信息的内容,于是我就好奇,看了一下作者的 github,然后也是自己小小的分析了一下 1、官方地址 Github: https://github.com/LC044/WeChatMsg 2、作者自证 url:https://github.com/LC044/WeChatMsg/issues/4923…

2024 11~12 月 做题记录(待更新)

普通和理所当然是什么呢CF2047D Move Back at a Cost 要使字典序最大,每次都要找到最小的数,把它前面的数都后移. 因为可以钦定后移的顺序使得后移的数按升序排列,所以每个数最多被移位一次. 定序后开两个队列模拟即可. CCPC2024 上海F 羁绊大师 将羁绊相同的英雄相连,因为…

看完这章你也会黑盒edu通杀

负责声明: 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用 信息收集: 在一个阳光明媚的中午一位刚吃完午饭的安服仔…

记一次对某学校挖矿木马的应急响应

本来今天高高兴兴,期待着明天的疯狂星期四,但客户那边突然有一台主机需要应急,那就上去看一眼。 1、事件背景 这次设备上有报警,发现是挖矿木马,并且也捕捉到了外联 IOC,那这问题就不大了,直接上机开搞!恶意 IOC:217.160.36.1592、上机处置 首先对这台主机的外联情况查…

Prometheus +VictoriaMetrics+Granafa安装部署

测试环境 prometheus-2.54.1.linux-amd64.tar.gz 下载地址: https://www.prometheus.io/download/ https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz node_exporter-1.8.2.linux-amd64.tar.gz 下载地址: https://g…

服务器被攻击,为什么硬防不起作用?

当服务器遭受攻击时,即使配备了硬件防护设备(如 100G 硬防),仍然可能出现性能下降或无法访问的情况。以下是详细的解释和解决方案:理解硬件防护的作用:硬件防护设备主要用于抵御大流量攻击(如 DDoS 攻击),通过清洗恶意流量来保护服务器。然而,它并不能完全消除所有类…

【ESP 乐鑫相关】ESP32-S3启动流程

转载自:https://blog.itpub.net/70040860/viewspace-3053923/ ESP32-S3启动流程本文将会介绍ESP32-S3从上电到运行app_main函数中间所经历的步骤(即启动流程)。从宏观上,该启动流程可分为如下3个步骤。①:一级引导程序,它被固化在ESP32-S3内部的ROM中,它会从flash的0x00…

80端口对外网访问受限,如何解除限制?

您好!当您发现配置了80端口的Nginx服务虽然可以在本地正常访问,但从外部网络却无法访问时,这通常是由于防火墙规则、安全组策略或其他网络配置不当所造成的。以下是详细的排查步骤和解决方案,帮助您解除80端口的访问限制:检查服务器防火墙设置: 首先,确认服务器上的防火…

服务器升级后,CPU性能下降,网站响应缓慢,如何优化?

在服务器硬件升级后,如果出现CPU性能下降、网站响应速度变慢的情况,这可能是由多种因素共同作用的结果。以下是一些详细的排查步骤和优化建议,帮助您提升服务器的整体性能:确认硬件配置变更: 首先,确保服务器硬件确实按照预期进行了升级。有时候,尽管表面上看起来硬件规…