Elasticsearch:简化数据流的数据生命周期管理

news2025/2/28 17:16:24

作者:来自 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 字段,以指示将管理下一代支持索引的系统。

要将未来的支持索引(在数据流滚动后创建)配置为由数据流生命周期管理,需要执行两个步骤:

  1. 更新支持数据流的索引模板,将 prefer_ilm 设置为 false(请注意,prefer_ilm 是一个索引设置,因此在索引模板中配置它意味着它只会在新的支持索引上配置)并配置所需的数据流生命周期(这将确保新的数据流将开始由数据流生命周期管理)。
  2. 使用 lifecycle API 为现有数据流配置数据流生命周期。

有关迁移到数据流生命周期的完整教程,请查看我们的文档。

结论

我们为数据流构建了一个生命周期功能,可以自动处理底层数据结构的维护,让你专注于业务生命周期需求,如降采样和数据保留。

试用我们新的无服务器(serverless)产品,并了解更多有关数据流生命周期的可能性的信息。

准备好自己尝试一下了吗?开始免费试用。
想要获得 Elastic 认证?了解下一期 Elasticsearch 工程师培训何时举行!

原文:Data lifecycle management: Simplifying data lifecycle management for data streams — Elastic Search Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1823307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划-简单多状态dp问题 -- 按摩师

动态规划-简单多状态dp问题 – 按摩师 文章目录 动态规划-简单多状态dp问题 -- 按摩师题目重现算法流程示例代码 题目重现 题目链接:按摩师 - 力扣 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时…

Linux网络编程:多路转接|select|poll

目录 前言: 1.IO多路转接---select 1.1.接口认识 1.2.select如何进行多路转接 1.3.select多路转接的优缺点 2.IO多路转接---poll 2.1.接口认识 2.2.poll如何进行多路转接 2.3.poll多路转接优缺点 前言: 多路转接(也称为IO多路复用&a…

留住马斯克和AI,股价连续大涨,但特斯拉还是贵?

留住马斯克和AI,股价连续大涨,但特斯拉还是贵? 特斯拉股东们花了560亿美元留住马斯克,但特斯拉的前景依旧迷雾重重,估值比一众科技巨头贵,汽车一季度销量疲弱,股价今年来累计下跌29%&#xff0…

mysql导入sql文件失败及解决措施

1.报错找不到表 1.1 原因 表格创建失败,编码问题mysql8相较于mysql5出现了新的编码集 1.2解决办法: 使用vscode打开sql文件ctrlh,批量替换,替换到你所安装mysql支持的编码集。 2.timestmp没有设置默认值 Error occured at:20…

LangChain入门学习笔记(三)—— Model I/O之Prompts

如果说LCEL是粘合剂,那么它需要粘合起来的要素就是各种组件。其中最核心的要素就是LangChain官方文档中定义的Model I/O:Prompts、Chat Models、LLMs和Output Parsers。这4个基本组件,可以处理基本的用户输入并通过大模型处理后按要求输出。 …

SpringBoot的Mybatis-plus实战之核心功能

文章目录 一、条件构造器二、自定义SQL第一步、基于wrapper构建where条件第二步、在mapper中声明变量名称第三步、自定义SQL 本篇继续MybatisPlus核心功能 一、条件构造器 MybatisPlus 支持各种复杂的where条件,可满足日常开发的所有需求。 使用到wrapper构造器&am…

代理服务

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在爬取网页的过程中,经常会出现不久前可以爬取的网页现在无法爬取了,这是因为您的IP被爬取网站的服务器所屏蔽了。此时代理服…

银河麒麟系统安装

新建虚拟机 选择典型下一步: 稍后安装操作系统 下一步 : 选择Linux Ubuntu 64位 下一步: 设置名称 选择一个虚拟机的位置进行下一步: 磁盘大小默认给20G 下一步: 点击完成 编辑虚拟机设置 点击CD/DVD(SATA) 使用IS…

27.设计注入功能界面

上一个内容:26.入口点注入项目搭建 使用 26.入口点注入项目搭建 它的代码为基础进行修改 效果图: 首先设置一些主窗口的边框属性 然后在IDD_PAGE_0里添加一个List Control 再给List Control设置调整大小类型属性 然后再给它添加一个变量 然后在拖入一个…

Linux 线程控制

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux初窥门径⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 前言 1.线程现象 2.线程等待 3.线程…

AutoCAD 2025 ObjectARX(C++)二次开发环境搭建

(原文:https://blog.iyatt.com/?p16480) 基本环境 AutoCAD 机械版 2025 Visual Studio 2022(需要安装“C 桌面开发”) 开发环境 下载 (1)ObjectARX SDK 下载(提供开发使用的 …

MacOS下如何使用Tomcat

提示:宝子们,希望文章对你们有所帮助, 请一键三连支持博主下吧~ 文章目录 前言一、Tomcat 压缩版二、Tomcat可执行文件版本最后 前言 电脑环境: MacOS Monterey 版本 12.6.8 Apple M1 Tomcat 9.0.83 Java 1.8.0_171 …

(三十)Flask之wtforms库【剖析源码上篇】

每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入…

收银系统源码-千呼新零售2.0【连锁店财务管理】

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看下…

金融与大模型:引领行业未来的创新融合

前言 在数字化浪潮席卷全球的今天,金融与大模型的结合正成为行业发展的新引擎。这种融合不仅为金融机构带来了前所未有的效率和准确性,也为金融市场的稳定与发展注入了新的活力。本文将基于当前的市场现状,结合金融环境的发展,深…

探索大数据在信用评估中的独特价值

随着我国的信用体系越来越完善,信用将影响越来越多的人。现在新兴的大数据信用和传统信用,形成了互补的优势,大数据信用变得越来越重要,那大数据信用风险检测的重要性主要体现在什么地方呢?本文将详细为大家介绍一下,…

【ETABS】Main phrases of ETABS .e2k file and parameter roughly study

文章目录 $ STORIES - IN SEQUENCE FROM TOP$ GRIDS$ MATERIAL PROPERTIESTYPE "Steel"TYPE "Concrete" $ REBAR DEFINITIONS$ FRAME SECTIONS$ CONCRETE SECTIONS$ SLAB PROPERTIES$ WALL PROPERTIES$ POINT COORDINATES$ LINE CONNECTIVITIES$ AREA CONN…

【Python/Pytorch - 网络模型】-- 手把手搭建E3D LSTM网络

文章目录 文章目录 00 写在前面01 基于Pytorch版本的E3D LSTM代码02 论文下载 00 写在前面 测试代码,比较重要,它可以大概判断tensor维度在网络传播过程中,各个维度的变化情况,方便改成适合自己的数据集。 需要github上的数据集…

Vue37-非单文件组件

一、组件的两种编写形式: 非单文件组件;单文件组件。 二、创建一个组件 2-1、组件中的el 组件中不写el,不说为谁服务。 2-2、组件中的data 因为对象形式,多处复用的话,有引用关系,改一处,另一…

6月14日 Qtday2

#include "widget.h" #include "ui_widget.h" #include <QTimer> using namespace std; Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), lab1(new QLabel(this)) //初始化一个标签显示登录状态 {//设置华清远见的标签图…