加载中

降采样概念

本页介绍了降采样的核心概念。

重要提示

降采样仅适用于时间序列数据流

时间序列是针对特定实体随时间观测的一系列观测值。观测到的样本可以表示为连续函数,其中时间序列维度保持不变,而时间序列指标随时间变化。

time series function

在时间序列数据流中,每个时间戳都会创建一个单独的文档。该文档包含不可变的时间序列维度,以及指标名称和值。单个时间戳可以存储多个时间序列维度和指标。

time series metric anatomy

对于最新数据,指标序列通常具有较短的采样时间间隔,以针对需要高数据分辨率的查询进行优化。

time series original

降采样通过将原始时间序列替换为具有更高采样间隔的数据流以及数据的统计表示,来减少较旧、访问频率较低的数据的存储占用。例如,如果原始指标样本每 10 秒采集一次,您可以选择随着数据老化将采样粒度降低为每小时一次。或者,您可以选择将归档数据的粒度降低为每月或更低。

time series downsampled

降采样应用于 TSDS 的各个后备索引。降采样操作会遍历源时间序列索引并执行以下步骤:

  1. 为每组具有匹配 _tsid 值(时间序列维度字段)的文档创建一个新文档,并将其归类到对应于特定时间间隔的存储桶中。

    例如,包含每 10 秒采样一次指标的 TSDS 索引可以降采样为每小时索引。给定小时间隔内的所有文档都会被汇总并存储为降采样索引中的单个文档。

  2. 对于每个新文档,将所有时间序列维度从源索引复制到目标索引。TSDS 中的维度是常量,因此此步骤每个存储桶仅执行一次。

  3. 对于每个时间序列指标字段,它会根据降采样方法计算降采样值。

  4. 对于所有其他字段,将最新值复制到目标索引。

  5. 用降采样索引替换原始索引,然后删除原始索引。

新的降采样索引是在原始索引的数据层上创建的,并继承了原始设置,例如分片和副本数量。

提示

您可以对降采样索引进行降采样。后续的降采样间隔必须是前一次降采样操作所用间隔的倍数。

降采样支持两种将同一存储桶中的多个值简化为单个代表性结果的方法:

  • last_value 仅存储存储桶中每个指标的最新值。此方法最能减少存储占用,但也会降低数据准确性。它适用于所有指标类型。

  • aggregate 存储每个存储桶中值的统计摘要。此方法比 last_value 保留了更多信息,但需要更多存储空间。它适用于每种指标类型,具体如下:

    • gauge 字段
      • aggregate_metric_double 存储 minmaxsumvalue_count
    • counter 字段
      • 对于累积计数器:存储第一个值,如果检测到计数器重置,则最多存储两个数据点 。保留字段类型。在以前的版本中,仅存储最后一个值。
      • 对于增量计数器:存储存储桶中值的总和。
    • histogram 字段
      • 将各个直方图合并为一个直方图,保留字段类型。

        支持所有三种直方图字段类型:histogramtdigestexponential_histogram

        histogramtdigest 字段类型使用 T-Digest 算法进行合并。

      • 保留指标的时间属性。对于累积直方图,Elasticsearch 使用与累积计数器相同的算法。

提示

对降采样索引进行降采样时,请使用与源索引相同的降采样方法。

目标降采样索引使用与源索引相同的字段映射,但有一个例外:time_series_metric: gauge 字段映射为 aggregate_metric_double

aggregate_metric_double 可用于 maxminsumvalue_countavg 聚合,而不会损失精度。

在 ES|QL 中,存储为 aggregate_metric_double 的降采样仪表盘(gauge)仍可在其他操作中用作 double,但精度会降低。在这种情况下,每个降采样间隔的平均值将用作单个代表值。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.