首页 > 其他分享 >ElasticSearch Aggregations(聚合)

ElasticSearch Aggregations(聚合)

时间:2025-01-18 10:43:28浏览次数:1  
标签:脚本 聚合 定义 script Aggregations aggregations 文档 ElasticSearch

目录

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)聚合

标签:脚本,聚合,定义,script,Aggregations,aggregations,文档,ElasticSearch
From: https://www.cnblogs.com/TMesh/p/18678121

相关文章

  • 【Kali工具】一款聚合暴力破解工具 Kraken
    本文为大家分析一款聚合密码破解工具。集成了常见的破解类型,上手也比较简单,一起来看看吧。在Kali中安装在Kali或者在其他Linux系统中,我们执行下面命令进行安装。gitclonehttps://github.com/jasonxtn/kraken.gitcdKrakenpipinstall-rrequirements.txt#运行pythonkr......
  • elasticsearch之数据聚合
    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何?实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。聚合的种......
  • RestAPI实现聚合
    API语法聚合条件与query条件同级别,因此需要使用request.source()来指定聚合条件。聚合的结果解析:@OverridepublicMap<String,List<String>>filters(RequestParamsparams){try{//1.准备RequestSearchRequestrequest=newSearchRequest("h......
  • 聚合
    聚合2.7.4聚合是一种数据批处理的操作。聚合操作可以将数据分组(或者不分组,即只有一组/每个记录都是一组)然后对每组数据执行多种批处理操作,最后返回结果。有了聚合能力,可以方便的解决很多没有聚合能力时无法实现或只能低效实现的场景,这类场景的例子有:分组查询:比如按图书类别获......
  • 计算机毕业设计Springboot云聚合支付平台 基于SpringBoot的云聚合支付解决方案 Spring
    计算机毕业设计Springboot云聚合支付平台6noy0741(配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着电子商务和移动互联网的飞速发展,支付方式和支付渠道日益多样化,用户对支付体验的要求也越来越高。商户为了满足不同用户的需求,需......
  • elasticsearch之DSL查询结果处理
    搜索的结果可以按照用户指定的方式去处理或展示。排序分页搜索关键词高亮排序elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。普通字段排序keyword、数值、日......
  • elasticsearch的DSL查询文档
    1、DSL查询文档Elasticsearch提供了基于JSON的DSL(DomainSpecificLanguage)来定义查询。常见的查询类型包括:查询所有:查询出所有数据,一般测试用。例如:match_all全文检索(fulltext)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:match_query:单字段查询mult......
  • reduce 到底是什么?Java8 Stream 的终极聚合工具详解
    reduce()是JavaStreamAPI提供的一个终端操作方法,用于将流中的元素组合起来生成一个单一的值。这一方法非常强大,可以实现累积、聚合、拼接等功能,适用于各种数据处理场景。1.reduce()方法的作用reduce()是一个通用的归约操作,它通过一个关联函数,逐个处理流中的每个元素,将......
  • ElasticSearch基础知识
    1.背景2.概念2.1文档Document类似mysql一列,json格式存储2.2索引Index索引类似数据库里的表,相同文档类型的集合2.3映射mapping类似表结构属性:type:类型text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)。keyword类型只能整体搜索,不支持搜索部分内容index:是......
  • elasticsearch7-集群磁盘使用率不均问题处理
    1、因消息积压发现磁盘使用率不均告警内容:er-iot-log-queue队列消息积压已超过500,当前为58322、信息收集1.使用_cat/nodes?vAPI查看每个节点的负载情况curl-XGET"http://localhost:9200/_cat/nodes?v"ipheap.percentram.percentcpuload_1mload_5m......