Rollup 概述

编辑

在 8.11.0 中已弃用。

Rollups 将在未来的版本中移除。请迁移降采样

基于时间的数据(主要由其时间戳标识的文档)通常具有相关的保留策略来管理数据增长。例如,您的系统可能每秒生成 500 个文档。这将每天生成 4300 万个文档,每年生成近 160 亿个文档。

虽然您的分析师和数据科学家可能希望您无限期地存储这些数据以进行分析,但时间永无止境,因此您的存储需求将持续无限增长。因此,保留策略通常由随着时间推移的存储成本的简单计算,以及组织愿意为保留历史数据支付的费用来决定。通常,这些策略会在几个月或几年后开始删除数据。

存储成本是一个固定的量。存储 Y 数据需要 X 金额。但是,一条数据的效用通常会随着时间而变化。以毫秒级粒度收集的传感器数据现在非常有用,几周前的数据也相当有用,但如果超过几个月则仅具有边际效用。

因此,虽然存储十年前的毫秒级传感器数据的成本是固定的,但该单个传感器读数的价值通常会随着时间而减少。它并非无用 - 它很容易为有用的分析做出贡献 - 但它的价值降低通常会导致删除而不是支付固定的存储成本。

Rollup 以降低的粒度存储历史数据

编辑

这就是 Rollup 发挥作用的地方。Rollup 功能将旧的、高粒度的数据汇总为降低粒度的格式,以便长期存储。通过将数据“汇总”到单个摘要文档中,与原始数据相比,可以大大压缩历史数据。

例如,考虑一下每天生成 4300 万个文档的系统。每秒的数据对于实时分析很有用,但查看十年数据的历史分析可能会在更大的时间间隔(例如每小时或每天的趋势)上工作。

如果我们将 4300 万个文档压缩为每小时摘要,则可以节省大量空间。Rollup 功能自动化了此汇总历史数据的过程。

有关设置和配置 Rollup 的详细信息,请参阅创建作业 API

Rollup 使用标准查询 DSL

编辑

Rollup 功能公开了一个新的搜索端点(/_rollup_search 与标准 /_search),该端点知道如何搜索汇总数据。重要的是,此端点接受 100% 标准 Elasticsearch 查询 DSL。您的应用程序无需学习新的 DSL 来检查历史数据,它可以简单地重用现有的查询和仪表板。

可用的功能有一些限制;并非所有查询和聚合都受支持,某些搜索功能(高亮显示等)被禁用,并且可用字段取决于 Rollup 的配置方式。这些限制在Rollup 搜索限制中进行了更详细的介绍。

但是,如果您的查询、聚合和仪表板仅使用可用功能,则将它们重定向到历史数据是微不足道的。

Rollup 合并“实时”和“汇总”数据

编辑

Rollup 的一个有用功能是能够在一个查询中查询“实时”实时数据以及历史“汇总”数据。

例如,您的系统可能保留一个月的原始数据。一个月后,它使用 Rollup 汇总为历史摘要,并删除原始数据。

如果您查询原始数据,您只会看到最近一个月的数据。如果您查询汇总数据,您只会看到一个月以上的数据。但是,RollupSearch 端点支持同时查询两者。它将从两个数据源获取结果并将它们合并在一起。如果“实时”和“汇总”数据之间存在重叠,则优先选择实时数据以提高准确性。

Rollup 能够感知多区间

编辑

最后,Rollup 能够智能地利用可用的最佳间隔。如果您使用过其他产品的汇总功能,您会发现它们可能存在限制。如果您以每日间隔配置 Rollup,则您的查询和图表只能使用每日间隔。如果您需要每月间隔,则必须创建另一个明确存储每月平均值的 Rollup 等。

Rollup 功能以这种方式存储数据,以便查询可以识别最小的可用间隔并将其用于处理。如果您以每日间隔存储 Rollup,则可以在每日或更长的时间间隔(每周、每月等)上执行查询,而无需显式配置新的 Rollup 作业。这有助于缓解汇总系统的主要缺点之一;相对于原始数据,灵活性降低。