【Elasticsearch】管道聚合

news2025/2/13 4:56:26

 

管道聚合就是在已有聚合结果之上在进行聚合,管道聚合是针对于聚合的聚合

 

在 Elasticsearch 中,管道聚合(Pipeline Aggregations)是一种特殊的聚合类型,用于对其他聚合的结果进行进一步的计算和处理,而不是直接从文档集合中提取数据。管道聚合可以基于其他聚合的输出来生成新的聚合结果,从而实现更复杂的数据分析。
管道聚合的主要特点

1. 基于其他聚合的输出:

• 管道聚合不直接处理文档数据,而是对其他聚合的结果进行计算。

• 例如,计算某个聚合结果的导数、移动平均值、最大值等。


2. 链式调用:

• 管道聚合可以链式调用,即一个管道聚合的结果可以作为另一个管道聚合的输入。

• 例如,计算二阶导数(即导数的导数)。


3. 灵活的引用:

• 使用`buckets_path`参数来引用其他聚合的结果。

• 可以引用嵌套聚合的结果,也可以引用同级聚合的结果。


4. 不能有子聚合:

• 管道聚合本身不能包含子聚合,但可以通过引用其他聚合的结果来实现类似的功能。


管道聚合的类型
Elasticsearch 提供了多种类型的管道聚合,每种类型用于不同的计算场景。以下是一些常见的管道聚合类型:


1.导数聚合(Derivative)
计算某个聚合结果的变化率。例如,计算销售额的每日变化率。


```json
{
  "aggs": {
    "sales_per_day": {
      "date_histogram": {
        "field": "timestamp",
        "calendar_interval": "day"
      },
      "aggs": {
        "total_sales": {
          "sum": {
            "field": "sales"
          }
        },
        "sales_derivative": {
          "derivative": {
            "buckets_path": "total_sales"
          }
        }
      }
    }
  }
}
```

2.移动平均聚合(Moving Average)
计算某个聚合结果的移动平均值。例如,计算7天的移动平均销售额。


```json
{
  "aggs": {
    "sales_per_day": {
      "date_histogram": {
        "field": "timestamp",
        "calendar_interval": "day"
      },
      "aggs": {
        "total_sales": {
          "sum": {
            "field": "sales"
          }
        },
        "moving_avg_sales": {
          "moving_avg": {
            "buckets_path": "total_sales",
            "window": 7
          }
        }
      }
    }
  }
}
```

3.累计和聚合(Cumulative Sum)
计算某个聚合结果的累计和。例如,计算销售额的累计和。


```json
{
  "aggs": {
    "sales_per_day": {
      "date_histogram": {
        "field": "timestamp",
        "calendar_interval": "day"
      },
      "aggs": {
        "total_sales": {
          "sum": {
            "field": "sales"
          }
        },
        "cumulative_sales": {
          "cumulative_sum": {
            "buckets_path": "total_sales"
          }
        }
      }
    }
  }
}
```

4.桶脚本聚合(Bucket Script)
基于多个聚合结果进行自定义计算。例如,计算 T 恤销售额占总销售额的百分比。


```json
{
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "order_date",
        "calendar_interval": "month"
      },
      "aggs": {
        "total_sales": {
          "sum": {
            "field": "sales"
          }
        },
        "tshirt_sales_sum": {
          "sum": {
            "field": "tshirt_sales"
          }
        },
        "tshirt_sales_percentage": {
          "bucket_script": {
            "buckets_path": {
              "total": "total_sales",
              "tshirt": "tshirt_sales_sum"
            },
            "script": "params.total > 0 ? (params.tshirt / params.total * 100) : 0"
          }
        }
      }
    }
  }
}
```

5.最大桶聚合(Max Bucket)
从兄弟聚合中选择最大值。例如,计算每月最大销售额。


```json
{
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "date",
        "calendar_interval": "month"
      },
      "aggs": {
        "sales": {
          "sum": {
            "field": "price"
          }
        }
      }
    },
    "max_monthly_sales": {
      "max_bucket": {
        "buckets_path": "sales_per_month>sales"
      }
    }
  }
}
```

管道聚合的使用场景

1. 时间序列分析:

• 计算时间序列数据的变化率(导数)、移动平均值、累计和等。

• 适用于销售额、流量、温度等时间序列数据的分析。


2. 比例和百分比计算:

• 计算某个指标占总指标的比例或百分比。

• 例如,计算某个产品的销售额占总销售额的百分比。


3. 异常检测:

• 通过计算导数或移动平均值,检测数据中的异常点。

• 例如,检测销售额的突然变化。


4. 多指标比较:

• 使用桶脚本聚合对多个指标进行自定义计算。

• 例如,计算两个指标的比值或差值。


注意事项

1. 性能问题:

• 管道聚合的计算基于其他聚合的结果,可能会增加查询的复杂度和计算时间。

• 在处理大规模数据时,需要特别注意性能优化。


2. `buckets_path`的正确使用:

• 确保`buckets_path`的路径正确,避免路径错误导致查询失败。

• 使用相对路径时,注意路径的层级关系。


3. 脚本的安全性:

• 在使用脚本时,确保脚本逻辑正确,避免除以零等错误。

• 例如,使用条件语句`params.total > 0 ? (params.tshirt / params.total * 100) : 0`。


总结
管道聚合是 Elasticsearch 中一种强大的工具,用于对其他聚合的结果进行进一步的计算和分析。通过合理使用管道聚合,可以实现复杂的数据分析需求,例如时间序列分析、比例计算、异常检测等。掌握管道聚合的使用方法和注意事项,可以帮助你更高效地进行数据分析和查询优化。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python的那些事第十八篇:框架与算法应用研究,人工智能与机器学习

人工智能与机器学习:框架与算法应用研究 摘要 本文深入探讨了人工智能与机器学习领域的核心框架和技术,包括TensorFlow、PyTorch和Scikit-learn库。文章首先介绍了TensorFlow和PyTorch的安装与配置方法,详细阐述了它们的基础概念&#xff0c…

java微服务常用技术

Spring Cloud Alibaba 1 系统架构演进 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。 1.1 单体架构 早期的软件系统通常是基于单体应用架构设计的,也就是将整个系统作为一个单一的、可执行的应用程序来构建和维护…

【Qt 常用控件】多元素控件(QListWidget、QTabelWidgt、QTreeWidget)

**View和**Widget的区别? **View的实现更底层,**Widget是基于**View封装实现的更易用的类型。 **View使用MVC结构 MVC是软件开发中 经典的 软件结构 组织形式,软件设计模式。 M(model)模型。管理应用程序的核心数据和…

解决VsCode的 Vetur 插件has no default export Vetur问题

文章目录 前言1.问题2. 原因3. 解决其他 前言 提示: 1.问题 Cannot find module ‘ant-design-vue’. Did you mean to set the ‘moduleResolution’ option to ‘node’, or to add aliases to the ‘paths’ option? Module ‘“/xxx/xxx/xxx/xxx/xxx/src/vie…

python制作自己的一款Markdowm格式消除工具

01 引言 在日常使用 Markdown 编写文档时,我们有时会需要将 Markdown 格式的文本转换为纯文本,去除其中的各种标记符号,如标题符号、列表符号、代码块标记等。手动去除这些标记不仅效率低下,还容易出错。本文将介绍如何使用 Pyt…

如何从头训练大语言模型: A simple technical report

今天来快速捋一下路线,写个简短的technical report,更多是原理介绍性的。按我个人理解,从最简单的部分开始,逐步过渡到最繁复的环节: 模型架构-> Pretrain -> Post-Train -> Infra -> 数据侧。再掺杂一些杂项&#xf…

gitlab无法登录问题

在我第一次安装gitlab的时候发现登录页面是 正常的页面应该是 这种情况的主要原因是不是第一次登录,所以我们要找到原先的密码 解决方式: [rootgitlab ~]# vim /etc/gitlab/initial_root_password# WARNING: This value is valid only in the followin…

食品饮料生产瓶颈?富唯智能协作机器人来 “破壁”

在食品和饮料行业的发展进程中,诸多生产瓶颈如重复性劳动负担、复杂环境作业难题、季节性产能波动等,长期制约着企业的高效运营与进一步发展。如今,富唯智能协作机器人的出现,为这些难题提供了完美的解决方案,正逐步改…

Python 实现 macOS 系统代理的设置

设置 SOCKS 代理 在 macOS 系统中,可以通过 networksetup 工具来设置 SOCKS 代理。以下是 Python 实现的方法: 使用 networksetup 设置 SOCKS 代理 import subprocessdef set_socks_proxy(server, port):"""设置 macOS 系统的 SOCKS 代理…

深度学习之神经网络框架搭建及模型优化

神经网络框架搭建及模型优化 目录 神经网络框架搭建及模型优化1 数据及配置1.1 配置1.2 数据1.3 函数导入1.4 数据函数1.5 数据打包 2 神经网络框架搭建2.1 框架确认2.2 函数搭建2.3 框架上传 3 模型优化3.1 函数理解3.2 训练模型和测试模型代码 4 最终代码测试4.1 SGD优化算法…

【设计模式】【行为型模式】命令模式(Command)

👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 📫 欢迎V: flzjcsg2,我们共同讨论Java深渊的奥秘 &#x1f…

C++模拟实现AVL树

目录 1.文章概括 2.AVL树概念 3.AVL树的性质 4.AVL树的插入 5.旋转控制 1.左单旋 2. 右单旋 3.左右双旋 4.右左双旋 6.全部代码 1.文章概括 本文适合理解平衡二叉树的读者阅读,因为AVL树是平衡二叉树的一种优化,其大部分实现逻辑与平衡二叉树是…

python卷积神经网络人脸识别示例实现详解

目录 一、准备 1)使用pytorch 2)安装pytorch 3)准备训练和测试资源 二、卷积神经网络的基本结构 三、代码实现 1)导入库 2)数据预处理 3)加载数据 4)构建一个卷积神经网络 5&#xff0…

以Unity6.0为例,如何在Unity中开启DLSS功能

DLSS DLSS(NVIDIA 深度学习超级采样):NVIDIA DLSS 是一套由 GeForce RTX™ Tensor Core 提供支持的神经渲染技术,可提高帧率,同时提供可与原生分辨率相媲美的清晰、高质量图像。目前最新突破DLSS 4 带来了新的多帧…

CSDN 大模型 笔记

AI 3大范式:计算 发发 交互 L1 生成代码 复制到IDEA (22年12-23年6,7月份) L2 部分自动编程 定义class 设计interface 让其填充实现 (23年7,8月份) L3 通用任务 CRUD (24年) L4 高度自动编程 通用领域专有任务&#xf…

Stability AI 联合 UIUC 提出单视图 3D 重建方法SPAR3D,可0.7秒完成重建并支持交互式用户编辑。

Stability AI 联合 UIUC 提出一种简单而有效的单视图 3D 重建方法 SPAR3D,这是一款最先进的 3D 重建器,可以从单视图图像重建高质量的 3D 网格。SPAR3D 的重建速度很快,只需 0.7 秒,并支持交互式用户编辑。 相关链接 论文&#xf…

网易易盾接入DeepSeek,数字内容安全“智”理能力全面升级

今年农历新年期间,全球AI领域再度掀起了一波革命性浪潮,国产通用大模型DeepSeek凭借其强大的多场景理解与内容生成能力迅速“出圈”,彻底改写全球人工智能产业的格局。 作为国内领先的数字内容风控服务商,网易易盾一直致力于探索…

自动驾驶---如何打造一款属于自己的自动驾驶系统

在笔者的专栏《自动驾驶Planning决策规划》中,主要讲解了行车的相关知识,从Routing,到Behavior Planning,再到Motion Planning,以及最后的Control,笔者都做了相关介绍,其中主要包括算法在量产上…

聚焦 AUTO TECH China 2025,共探汽车内外饰新未来Automotive Interiors

全球汽车产业蓬勃发展的大背景下,汽车内外饰作为汽车重要组成部分,其市场需求与技术创新不断推动着行业变革。2025年11月20日至22日,一场备受瞩目的行业盛会 ——AUTO TECH China 2025 广州国际汽车内外饰技术展览会将在广州保利世贸博览馆盛…

Moretl 增量文件采集工具

永久免费: <下载> <使用说明> 用途 定时全量或增量采集工控机,电脑文件或日志. 优势 开箱即用: 解压直接运行.不需额外下载.管理设备: 后台统一管理客户端.无人值守: 客户端自启动,自更新.稳定安全: 架构简单,兼容性好,通过授权控制访问. 架构 技术架构: Asp…