加载中

时间序列数据流

时序数据流 (TSDS) 是一种专为索引指标数据而优化的数据流。TSDS 可帮助您将一系列数据点作为一个整体进行分析。

TSDS 还可以帮助您更高效地存储指标数据。在我们的基准测试中,存储在 TSDS 中的指标数据比常规数据流占用的磁盘空间少 70%。具体效果因数据集而异。

在设置时序数据流之前,请确保您熟悉常规数据流概念。

指标由数据点-时间戳对组成,由维度字段标识,可用于聚合查询。常规数据流和时序数据流都可以存储指标数据。

如果您通常以近乎实时的方式并按 @timestamp 顺序将指标数据添加到 Elasticsearch,请选择时序数据流。对于其他带时间戳的数据(例如日志或追踪),请使用日志数据流常规数据流

为确保 TSDS 适合您的使用场景,请查看本页面上关于与常规数据流的区别列表。

时序是针对特定实体的一系列观测值。这些观测值共同让您可以随时间推移跟踪实体的变化。例如,时序可以跟踪

  • 计算机的 CPU 和磁盘使用率
  • 股票价格
  • 来自气象传感器的温度和湿度读数
time series chart

与常规数据流相比,TSDS 使用了一些特定于时序的附加字段:维度字段和指标字段,以及一个内部 _tsid 元数据字段。

维度字段通常对应于您所测量的项目的特征。例如,与同一个气象传感器相关的文档可能具有相同的 sensor_idlocation 值。

提示

Elasticsearch 使用维度和时间戳来生成时序文档的 _id 值。具有相同维度和时间戳的两个文档被视为重复项。重复项在摄取期间会被拒绝,并返回 409 Conflict 状态。

要将字段标记为维度,请将布尔值 time_series_dimension 映射参数设置为 true。以下字段类型支持 time_series_dimension 参数

若要处理 flattened 字段,请使用 time_series_dimensions 参数将字段数组配置为维度。有关详细信息,请参阅 flattened

您还可以通过使用直通 (pass-through) 字段来简化维度定义。

指标是随时间变化的数值测量值。TSDS 中的文档通常包含一个或多个指标字段。

要将字段标记为指标,请使用 time_series_metric 映射参数。此参数确保数据以适合时序分析的最佳方式进行存储。time_series_metric 的有效值为 counter(计数器)、gauge(仪表)和 histogram(直方图)

counter
一种跟踪随时间累积的值的指标。例如,重启服务进程时重置的错误计数或已完成任务的计数。默认情况下,计数器使用累积时间属性,但也支持增量时间属性。所有数字字段类型都支持计数器。
gauge
一种表示可以任意增加或减少的单个数值的指标。例如,温度或可用磁盘空间。所有数字字段类型aggregate_metric_double(用于下采样期间的内部使用,很少由用户填充)都支持仪表 (gauge)。
histogram
一种跟踪数值分布(如延迟或大小分布)的指标。histogramtdigestexponential_histogram 支持直方图。默认情况下,直方图使用增量时间属性,但 exponential_histogram 也支持累积时间属性。

_tsid 是根据文档维度自动生成的对象。它旨在供 Elasticsearch 内部使用,因此在大多数情况下,您无需直接操作它。_tsid 字段的格式可能会发生变化。

时序数据流的工作方式与常规数据流类似,但有一些关键区别:

  • 时序索引模式:TSDS 的匹配索引模板必须包含一个 data_stream 对象,并将 index.mode 设置为 time_series。此选项可启用大多数与 TSDS 相关的功能。

  • 字段:在 TSDS 中,每个文档包含

    • 一个 @timestamp 字段
    • 一个或多个设置了 time_series_dimension: true维度字段
    • 一个或多个指标字段
    • 一个自动生成的文档 _id(不支持自定义 _id 值)
  • 后端索引:TSDS 使用时间绑定索引,将同一时间段的数据存储在同一个后端索引中。

  • 基于维度的路由:路由逻辑使用维度字段将时序的所有数据点映射到同一个分片,从而提高存储效率和查询性能。重复的数据点会被拒绝。

  • 排序:TSDS 使用内部索引排序,按 _tsid@timestamp 对分片段进行排序,以实现更好的压缩。时序数据流不使用 index.sort.* 设置。

  • Source 字段:TSDS 使用合成 _source,因此受到应用于 _source 字段的一些限制修改约束。

  • 文档值跳过器 (Doc values skippers):TSDS 在其 _tsid@timestamp维度指标 字段上启用了文档值跳过器。由于 tsid@timestamp 是索引排序的一部分,跳过器允许 {{es}} 避免为这些字段构建后端索引,从而降低磁盘使用率并提高摄取速度。

  • 序列号被禁用:TSDS 默认禁用序列号,以大幅提高存储效率(最高可达 2 倍)。

    当禁用序列号时,乐观并发控制将被禁用,导致 update-by-querydelete-by-query 操作以较弱的一致性执行。这些功能通常与时序工作负载无关,但如果您的应用程序需要它们,可以通过在相关 TSDS 的索引模板中设置 index.disable_sequence_numbers: false 来恢复序列号。

您可以使用 ES|QL TS 命令来查询时序数据流。TS 命令针对高效处理时序数据进行了优化,并支持将时序聚合函数与窗口配合使用。

© . 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.