小说网站做编辑器,wordpress添加icon文件夹,微博营销软件,建筑网建设通平台作者#xff1a;来自 Elastic Andrei Dan 今天#xff0c;我们将探索 Elasticsearch 针对数据流的新数据管理系统#xff1a;数据流生命周期#xff0c;从版本 8.14 开始提供。凭借其简单而强大的执行模型#xff0c;数据流生命周期可让n 你专注于数据生命周期的业务相关方…作者来自 Elastic Andrei Dan 今天我们将探索 Elasticsearch 针对数据流的新数据管理系统数据流生命周期从版本 8.14 开始提供。凭借其简单而强大的执行模型数据流生命周期可让n 你专注于数据生命周期的业务相关方面例如降采样和保留。在后台它会自动确保存储数据的 Elasticsearch 结构得到有效管理。 Elasticsearch 中的数据生命周期管理演变
自 6.x Elasticsearch 系列以来索引生命周期管理 (index lifecycle management - ILM) 已使用户能够通过自动在层之间迁移数据来维护健康的索引并节省成本。
ILM 根据索引独特的性能、弹性和保留需求来处理索引同时提供对成本的显着控制并详细定义索引的生命周期。
ILM 是一种非常通用的解决方案可满足广泛的用例从时间序列索引和数据流到存储文本内容的索引。对于所有这些用例生命周期定义将非常不同当我们考虑每个单独部署的可用硬件和数据分层资源时它会变得更加不同。因此ILM 允许完全可定制的生命周期定义但代价是复杂性精确的滚动定义何时强制合并、收缩和部分挂载索引。
当我们开始研究无服务器serverless解决方案时我们有机会通过新的视角来审视生命周期管理我们的用户可以并且将免受 Elasticsearch 内部概念如分片、分配或集群拓扑的影响。更重要的是在无服务器中我们希望能够根据需要更改内部 Elasticsearch 配置以保持用户的最佳体验。
在这种新情况下我们研究了现有的 ILM 解决方案该解决方案为用户提供了内部 Elasticsearch 概念作为构建块并决定我们需要一个新的解决方案来管理数据的生命周期。
我们吸取了从大规模构建和维护 ILM 中吸取的经验教训并为未来创建了一个更简单的生命周期管理系统。该系统更具体仅适用于数据流data streams。它直接在数据流上配置为属性类似于索引设置属于索引的方式我们称之为数据流生命周期。它是一种内置机制继续使用索引设置类比始终处于开启状态并且始终对数据流的生命周期需求做出反应。
通过将适用范围限定在数据流即带有很少更新的时间戳的数据我们能够避免自定义转而使用易用性和自动默认值。数据流生命周期将自动执行数据结构维护操作如滚动和强制合并并允许你仅处理你应该关心的业务相关生命周期功能例如降采样downsampling和数据保留data retention。
数据流生命周期的功能不如 ILM 丰富最值得注意的是它目前不支持数据分层、缩减或可搜索快照。但是不需要这些特定功能的用例将更好地由数据流生命周期服务。
虽然数据流生命周期最初是为无服务器环境的需求而设计的但它们也可用于常规本地和 ESS Elasticsearch 部署。 配置数据流生命周期
让我们创建一个 Elasticsearch Serverless 项目并开始创建由数据流生命周期管理的数据流。
创建项目后转到索引管理并为 my-data-* 索引模式创建索引模板并配置 30 天的保留期 让我们浏览这些步骤并完成此索引模板我在映射部分配置了一个文本字段但这是可选的 现在我们将提取一些以 my-data-stream 命名空间为目标的数据。我将使用左侧的 Dev Tools 部分但你也可以选择自己喜欢的数据提取方式 my-data-stream 现已创建它包含 2 个文档。让我们转到 Index Management/Data Streams 并检查一下 就这样 我们的数据流由数据流生命周期管理数据保留期配置为 30 天。所有与 my-data-* 模式匹配的新数据流都将由数据流管理并获得 30 天的数据保留期。 更新已配置的生命周期
数据流生命周期属性属于数据流。因此我们可以通过直接导航到数据流来配置更新现有数据流的生命周期。让我们转到索引管理/数据流并将 my-data-stream 的保留期编辑为 7 天 我们现在看到我们的数据流的数据保留期为 7 天 现在系统中现有数据流已配置所需的 7 天保留期我们还要更新索引模板保留以便创建的新数据流也能获得 7 天的保留期 实施细节
主节点定期根据 data_streams.lifecycle.poll_interval 设置默认情况下每 5 分钟一次迭代系统中配置为由生命周期管理的数据流。在每次迭代中系统中的每个后备索引状态都会被评估并执行一个操作以实现配置的生命周期所描述的目标状态。
对于每个管理的数据流我们首先尝试根据 cluster.lifecycle.default.rollover 条件滚动数据流。这是对数据流的写入索引尝试的唯一操作。
滚动后前一个写入索引将有资格进行合并。由于我们希望分片维护任务的合并是我们自动执行的因此我们实施了一个更轻量的合并操作这是强制合并到 1 个段的替代方法它只合并小段的长尾long tail而不是整个分片。这种方法的主要好处是它可以在滚动后自动和尽早应用。
合并后备索引后在下一次生命周期执行运行时索引将被降采样。
完成所有计划的降采样轮次后每次生命周期运行时都会检查后备索引是否符合数据保留条件。当指定的数据保留期过后自滚动时间起后备索引将被删除。
降采样和数据保留都是基于时间的操作例如 data_retention: 7d并且是从索引滚动以来计算的。索引滚动以来的时间在 explain lifecycle API 中可见我们称之为generation_time表示后备索引成为世代索引而不是数据流的写入索引以来的时间。 我已经运行了 my-data-stream在轮转时有 2 个后备索引的 explain lifecycle API以深入了解
我们可以看到两个索引的 lifecycle 定义都包括 7 天的更新数据保留期。
较旧的索引 .ds-my-data-stream-2024.05.09-000001 不再是数据流的写入索引我们可以看到解释 API 将 generation_time 报告为 49 分钟。一旦生成时间达到 7 天.ds-my-data-stream-2024.05.09-000001 后备索引将被删除以符合配置的数据保留期。
索引 .ds-my-data-stream-2024.05.09-000002 是数据流的写入索引一旦满足 rollover 标准就会等待轮转。
time_since_index_creation 字段用于帮助计算当数据流不再接收大量数据时何时根据自动 max_age 标准滚动数据流。 从 ILM 迁移到数据流生命周期
促进数据流生命周期的平稳过渡以便对数据流进行测试、试验并最终将其迁移到生产环境这始终是此功能的目标。因此我们决定允许 ILM 和数据流生命周期在云环境和本地部署中的数据流上共存。
ILM 配置继续直接存在于支持索引上而数据流生命周期则配置在数据流本身上。
支持索引一次只能由一个管理系统管理。如果 ILM 和数据流生命周期都适用于支持索引则 ILM 优先默认情况下但可以使用 index.lifecycle.prefer_ilm 索引设置将优先级更改为数据流生命周期。
数据流的迁移路径将允许现有的 ILM 管理的支持索引老化并最终被 ILM 删除而新的支持索引将开始由数据流生命周期管理。
我们增强了 GET _data_stream API使其包含每个支持索引的滚动信息managed_by 字段可能值为 Index Lifecycle Management、Data stream lifecycle 或Unmanaged以及 prefer_ilm 设置的值并在数据流级别包含 next_generation_managed_by 字段以指示将管理下一代支持索引的系统。
要将未来的支持索引在数据流滚动后创建配置为由数据流生命周期管理需要执行两个步骤
更新支持数据流的索引模板将 prefer_ilm 设置为 false请注意prefer_ilm 是一个索引设置因此在索引模板中配置它意味着它只会在新的支持索引上配置并配置所需的数据流生命周期这将确保新的数据流将开始由数据流生命周期管理。使用 lifecycle API 为现有数据流配置数据流生命周期。
有关迁移到数据流生命周期的完整教程请查看我们的文档。 结论
我们为数据流构建了一个生命周期功能可以自动处理底层数据结构的维护让你专注于业务生命周期需求如降采样和数据保留。
试用我们新的无服务器serverless产品并了解更多有关数据流生命周期的可能性的信息。
准备好自己尝试一下了吗开始免费试用。 想要获得 Elastic 认证了解下一期 Elasticsearch 工程师培训何时举行 原文Data lifecycle management: Simplifying data lifecycle management for data streams — Elastic Search Labs