数据流生命周期
编辑数据流生命周期
编辑数据流生命周期是数据流用于管理其生命周期的内置机制。它使您能够根据保留要求轻松自动化数据流的管理。例如,您可以配置生命周期以
- 确保数据流中索引的数据至少保留您定义的保留时间。
- 确保超过保留时间的数据将在稍后由 Elasticsearch 自动删除。
为了实现这一点,它支持
数据流生命周期还支持对数据流后备索引进行下采样。有关更多详细信息,请参阅下采样示例。
它是如何工作的?
编辑在由 data_streams.lifecycle.poll_interval
配置的时间间隔内,Elasticsearch 会遍历每个数据流并执行以下步骤
- 检查数据流是否配置了数据流生命周期,跳过任何不属于托管数据流的索引。
- 如果满足
cluster.lifecycle.default.rollover
定义的条件,则滚动数据流的写入索引。 - 在索引不再是写入索引之后(即数据流已滚动),自动进行尾部合并。数据流生命周期执行仅针对小段的长尾而不是整个分片进行合并的操作。由于段被组织成指数大小的层级,因此合并小段的长尾仅是强制合并到单个段的成本的一小部分。小段通常会保留最新的数据,因此尾部合并会将合并资源集中在最有可能继续被查询的高价值数据上。
- 如果配置了下采样,它将执行所有配置的下采样轮次。
- 将保留期应用于其余的后备索引。这意味着删除
generation_time
长于有效保留期(阅读有关有效保留期计算的更多信息)的后备索引。generation_time
仅适用于滚动过的后备索引,并且它是自后备索引滚动以来的时间,或者是index.lifecycle.origination_date
设置中可选配置的时间。
我们使用 generation_time
而不是创建时间,因为这可确保后备索引中的所有数据都已超过保留期。因此,保留期不是数据被删除的确切时间,而是数据将被存储的最短时间。
步骤 2-4
仅适用于不由 ILM 管理的后备索引,这意味着这些索引要么没有定义 ILM 策略,要么如果它们有定义,则它们将 index.lifecycle.prefer_ilm
设置为 false
。
配置数据流生命周期
编辑由于生命周期是在数据流级别配置的,因此在新数据流和现有数据流上配置生命周期的过程有所不同。
在以下各节中,我们将介绍以下教程
- 要创建具有生命周期的新数据流,您需要将数据流生命周期添加到与数据流名称匹配的索引模板中(请参阅教程:创建具有生命周期的数据流)。当以您的数据流名称执行写入操作到达 Elasticsearch 时,将创建具有相应数据流生命周期的数据流。
- 要更新现有数据流的生命周期,您需要使用数据流生命周期 API 来编辑数据流本身的生命周期(请参阅教程:更新现有数据流)。
- 使用教程:将 ILM 管理的数据流迁移到数据流生命周期,将现有 ILM 管理的数据流迁移到数据流生命周期。
更新现有数据流的数据流生命周期与更新设置或映射不同,因为它应用于数据流级别,而不是应用于单个后备索引。