数据流生命周期

编辑

数据流生命周期是数据流用于管理其生命周期的内置机制。它使您能够根据保留要求轻松自动化数据流的管理。例如,您可以配置生命周期以

  • 确保数据流中索引的数据至少保留您定义的保留时间。
  • 确保超过保留时间的数据将在稍后由 Elasticsearch 自动删除。

为了实现这一点,它支持

  • 自动滚动,它将您的传入数据分成更小的块,以方便更好的性能和不向后兼容的映射更改。
  • 可配置的保留期,它允许您配置保证存储数据的时间段。Elasticsearch 允许在稍后删除超过此时间段的数据。保留期可以在数据流级别或全局级别配置。请阅读此教程中有关不同选项的更多信息。

数据流生命周期还支持对数据流后备索引进行下采样。有关更多详细信息,请参阅下采样示例

它是如何工作的?

编辑

在由 data_streams.lifecycle.poll_interval 配置的时间间隔内,Elasticsearch 会遍历每个数据流并执行以下步骤

  1. 检查数据流是否配置了数据流生命周期,跳过任何不属于托管数据流的索引。
  2. 如果满足 cluster.lifecycle.default.rollover 定义的条件,则滚动数据流的写入索引。
  3. 在索引不再是写入索引之后(即数据流已滚动),自动进行尾部合并。数据流生命周期执行仅针对小段的长尾而不是整个分片进行合并的操作。由于段被组织成指数大小的层级,因此合并小段的长尾仅是强制合并到单个段的成本的一小部分。小段通常会保留最新的数据,因此尾部合并会将合并资源集中在最有可能继续被查询的高价值数据上。
  4. 如果配置了下采样,它将执行所有配置的下采样轮次。
  5. 将保留期应用于其余的后备索引。这意味着删除 generation_time 长于有效保留期(阅读有关有效保留期计算的更多信息)的后备索引。generation_time 仅适用于滚动过的后备索引,并且它是自后备索引滚动以来的时间,或者是index.lifecycle.origination_date 设置中可选配置的时间。

我们使用 generation_time 而不是创建时间,因为这可确保后备索引中的所有数据都已超过保留期。因此,保留期不是数据被删除的确切时间,而是数据将被存储的最短时间。

步骤 2-4 仅适用于不由 ILM 管理的后备索引,这意味着这些索引要么没有定义 ILM 策略,要么如果它们有定义,则它们将 index.lifecycle.prefer_ilm 设置为 false

配置数据流生命周期

编辑

由于生命周期是在数据流级别配置的,因此在新数据流和现有数据流上配置生命周期的过程有所不同。

在以下各节中,我们将介绍以下教程

更新现有数据流的数据流生命周期与更新设置或映射不同,因为它应用于数据流级别,而不是应用于单个后备索引。