【Elasticsearch】bucket_sort

ops/2025/2/13 5:07:12/

Elasticsearch 的`bucket_sort`聚合是一种管道聚合,用于对父多桶聚合(如`terms`、`date_histogram`、`histogram`等)的桶进行排序。以下是关于`bucket_sort`的详细说明:

1.基本功能

`bucket_sort`聚合可以对父聚合返回的桶进行排序,支持以下排序依据:

• `_key`:基于桶的键值(例如时间戳或词项)。

• `_count`:基于桶中的文档数量。

• 子聚合结果:基于子聚合的计算结果(例如`sum`、`avg`等)。

此外,`bucket_sort`还可以通过`from`和`size`参数截断结果,只返回部分桶。

2.参数说明

`bucket_sort`聚合的主要参数包括:

• `sort`:指定排序字段和顺序(升序或降序)。

• `from`:跳过前`N`个桶。

• `size`:返回的桶数量。

• `gap_policy`:当数据中存在缺口时的处理策略,默认为`skip`。

3.使用场景

3.1按子聚合结果排序

假设有一个`sales`索引,包含交易数据,我们希望按月统计销售额,并返回销售额最高的 3 个月:

```json

POST /sales/_search

{

  "size": 0,

  "aggs": {

    "sales_per_month": {

      "date_histogram": {

        "field": "date",

        "calendar_interval": "month"

      },

      "aggs": {

        "total_sales": {

          "sum": {

            "field": "price"

          }

        },

        "sales_bucket_sort": {

          "bucket_sort": {

            "sort": [

              {

                "total_sales": {

                  "order": "desc"

                }

              }

            ],

            "size": 3

          }

        }

      }

    }

  }

}

```

此查询将返回销售额最高的 3 个月。

3.2仅截断结果

如果不进行排序,仅截断结果,可以省略`sort`参数。例如,仅返回第 2 个桶:

```json

POST /sales/_search

{

  "size": 0,

  "aggs": {

    "sales_per_month": {

      "date_histogram": {

        "field": "date",

        "calendar_interval": "month"

      },

      "aggs": {

        "bucket_truncate": {

          "bucket_sort": {

            "from": 1,

            "size": 1

          }

        }

      }

    }

  }

}

```

此查询将仅返回第 2 个桶。

4.与其他聚合结合使用

`bucket_sort`可以与多种聚合结合使用,例如:

• `date_histogram`:按时间间隔分桶并排序。

• `histogram`:按数值间隔分桶并排序。

5.注意事项

• `bucket_sort`是管道聚合,执行顺序在非管道聚合之后。

• 排序和截断操作仅对父聚合返回的桶生效。

通过以上方式,`bucket_sort`聚合可以灵活地对聚合结果进行排序和截断,满足多种数据分析需求。


http://www.ppmy.cn/ops/157960.html

相关文章

基于 GEE 利用插值方法填补缺失影像

目录 1 完整代码 2 运行结果 利用GEE合成NDVI时,如果研究区较大,一个月的影像覆盖不了整个研究区,就会有缺失的地方,还有就是去云之后,有云量的地区变成空值。 所以今天来用一种插值的方法来填补缺失的影像&#xf…

企业如何利用DeepSeek提升网络安全管理水平

企业可以通过深度整合DeepSeek的AI能力,构建智能化、动态化的网络安全防御体系,以应对APT(高级持续性威胁)等复杂攻击。以下是具体策略与实践路径: 1. AI驱动的威胁检测与分析 多模态威胁狩猎 DeepSeek的深度学习技术能…

计算机视觉-拟合

一、拟合 拟合的作用主要是给物体有一个更好的描述 根据任务选择对应的方法(最小二乘,全最小二乘,鲁棒最小二乘,RANSAC) 边缘提取只能告诉边,但是给不出来数学描述(应该告诉这个点线是谁的&a…

游戏引擎学习第93天

回顾并推动进展 我们上一期的进展是,我们第一次开始填充可以任意旋转和缩放的固体形状。接下来我们希望继续推进图形功能,能够支持更多的特性,以便拥有一个真正的渲染器。 目前的目标是开始填充这些形状,并能够支持旋转、缩放&a…

传输层协议 UDP 与 TCP

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 前置复盘🦋 传输层🦋 再谈端口号🦋 端口号范围划分🦋 认识知名端口号 (Well-Know Port Number) 二&#xf…

DeepSeek模型架构及优化内容

DeepSeek v1版本 模型结构 DeepSeek LLM基本上遵循LLaMA的设计: 采⽤Pre-Norm结构,并使⽤RMSNorm函数. 利⽤SwiGLU作为Feed-Forward Network(FFN)的激活函数,中间层维度为8/3. 去除绝对位置编码,采⽤了…

信息安全之网络安全

网络安全技术是一类包含内容极其广泛的技术,广义上说任何检测、防御和抵制网络攻击的技术都属于网络安全技术,而且很多网络安全技术都是攻击驱动型的。 网络安全大致包含的内容主要有防火墙,入侵检测,漏洞扫描与网络隔离&#xf…

航班运营管理系统(FOC)架构设计方案

一、架构设计目标 高可用性&#xff1a;支持724小时运行&#xff0c;故障恢复时间&#xff08;RTO&#xff09;<1分钟。 实时性&#xff1a;航班动态数据延迟<500ms&#xff0c;调度决策响应时间<2秒。 可扩展性&#xff1a;支持横向扩展以应对未来航班量增长&#…