当前位置: 首页 > news >正文

Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。

在本教程中,我们将了解如何将现有数据流(data stream)从索引生命周期管理 (ILM) 迁移到数据流生命周期。 现有的 ILM 管理的支持指数将继续由 ILM 管理,直到它们过期并被 ILM 删除; 但是,新的支持索引将由数据流生命周期管理。 这样,数据流逐渐从由 ILM 管理迁移到由数据流生命周期管理。 正如我们将看到的,ILM 和数据流生命周期可以共同管理数据流; 但是,一个索引一次只能由一个系统管理

如果你对 ILM 还不是很清楚的话,请详细阅读文章 “Elasticsearch:Index 生命周期管理入门”。针对数据流生命周期,请详细阅读文章 "Data streams(一)(二)(三)"

长话短说

要将数据流从 ILM 迁移到数据流生命周期,我们必须执行两个步骤:

  • 更新支持数据流的索引模板,将 prefer_ilm 设置为 false,并配置数据流生命周期。
  • 使用生命周期 API 为现有数据流配置数据流生命周期。

设置 ILM 管理的数据流

首先,我们创建一个具有两个由 ILM 管理的支持索引的数据流。 我们首先创建 ILM 策略:

PUT _ilm/policy/pre-dsl-ilm-policy
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_primary_shard_size": "50gb"}}},"delete": {"min_age": "7d","actions": {"delete": {}}}}}
}

让我们创建一个索引模板来支持数据流并配置 ILM:

PUT _index_template/dsl-data-stream-template
{"index_patterns": ["dsl-data-stream*"],"data_stream": { },"priority": 500,"template": {"settings": {"index.lifecycle.name": "pre-dsl-ilm-policy"}}
}

现在,我们将索引一个以 dsl-data-stream 为目标的文档来创建数据流,并且我们还将手动翻转 (rollover) 数据流以创建另一代索引:

POST dsl-data-stream/_doc?
{"@timestamp": "2023-10-18T16:21:15.000Z","message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
}
POST dsl-data-stream/_rollover
{"acknowledged": true,"shards_acknowledged": true,"old_index": ".ds-dsl-data-stream-2024.03.21-000001","new_index": ".ds-dsl-data-stream-2024.03.21-000002","rolled_over": true,"dry_run": false,"conditions": {}
}

我们将使用 GET _data_stream API 来检查数据流的状态:

GET _data_stream/dsl-data-stream

检查响应,我们将看到两个后备索引(backing indices)均由 ILM 管理,并且下一个索引也将由 ILM 管理:

{"data_streams": [{"name": "dsl-data-stream","timestamp_field": {"name": "@timestamp"},"indices": [{"index_name": ".ds-dsl-data-stream-2023.10.19-000001", (1)   "index_uuid": "xCEhwsp8Tey0-FLNFYVwSg","prefer_ilm": true,                                    (2)   "ilm_policy": "pre-dsl-ilm-policy",                    (3)   "managed_by": "Index Lifecycle Management"             (4)   },{"index_name": ".ds-dsl-data-stream-2023.10.19-000002","index_uuid": "PA_JquKGSiKcAKBA8DJ5gw","prefer_ilm": true,"ilm_policy": "pre-dsl-ilm-policy","managed_by": "Index Lifecycle Management"}],"generation": 2,"status": "GREEN","template": "dsl-data-stream-template","next_generation_managed_by": "Index Lifecycle Management", (5)  "prefer_ilm": true,                                         (6)  "ilm_policy": "pre-dsl-ilm-policy",                         (7)  "hidden": false,"system": false,"allow_custom_routing": false,"replicated": false}]
}
  1. 后备索引的名称。
  2. 对于每个后备索引,我们会显示 prefer_ilm 配置的值,该值将指示在两个系统都配置了索引的情况下,ILM 是否优先于数据流生命周期。
  3. 为此索引配置的 ILM 策略。
  4. 管理该索引的系统(可能的值为 “Index Lifecycle Management”、“Data stream lifecycle” 或 “Unmanaged”)
  5. 将管理下一个索引的系统(一旦数据流滚动,该数据流的新写入索引)。 可能的值为 “Index Lifecycle Management”、“Data stream lifecycle” 或 “Unmanaged”。
  6. 在支持数据流的索引模板中配置的 prefer_ilm 值。 该值将为所有新的后备索引配置。 如果未在索引模板中配置,则后备索引将接收 true 作为默认值(默认情况下,ILM 优先于数据流生命周期,因为它目前功能更丰富)。
  7. 在支持此数据流的索引模板中配置的 ILM 策略(将在所有新的后备索引上配置,只要它存在于索引模板中)。

将数据流迁移到数据流生命周期

要将 dsl-data-stream 迁移到数据流生命周期,我们必须执行两个步骤:

  • 更新支持数据流的索引模板,将 prefer_ilm 设置为 false,并配置数据流生命周期。
  • 使用 lifecycle API 为现有 dsl-data-stream 配置数据流生命周期。

重要:添加到索引模板中的数据流生命周期配置作为数据流配置,仅适用于新的数据流。 我们的数据流已经存在,因此即使我们在索引模板中添加了数据流生命周期配置,它也不会应用于 dsl-data-stream。

让我们更新索引模板:

PUT _index_template/dsl-data-stream-template
{"index_patterns": ["dsl-data-stream*"],"data_stream": { },"priority": 500,"template": {"settings": {"index.lifecycle.name": "pre-dsl-ilm-policy","index.lifecycle.prefer_ilm": false                  (1)             },"lifecycle": {"data_retention": "7d"                               (2)}}
}
  • 现在将在新的后备索引(通过滚动数据流创建)上配置 prefer_ilm 设置,以便 ILM 不会优先于数据流生命周期。
  • 我们正在配置数据流生命周期,以便新数据流将由数据流生命周期管理。

我们现在已经确保新的数据流将由数据流生命周期进行管理。让我们更新现有的 dsl-data-stream 并配置数据流生命周期:

PUT _data_stream/dsl-data-stream/_lifecycle
{"data_retention": "7d"
}

我们可以检查数据流以检查下一代是否确实由数据流生命周期管理:

GET _data_stream/dsl-data-stream
{"data_streams": [{"name": "dsl-data-stream","timestamp_field": {"name": "@timestamp"},"indices": [{"index_name": ".ds-dsl-data-stream-2023.10.19-000001","index_uuid": "xCEhwsp8Tey0-FLNFYVwSg","prefer_ilm": true,"ilm_policy": "pre-dsl-ilm-policy","managed_by": "Index Lifecycle Management"                      (1)              },{"index_name": ".ds-dsl-data-stream-2023.10.19-000002","index_uuid": "PA_JquKGSiKcAKBA8DJ5gw","prefer_ilm": true,"ilm_policy": "pre-dsl-ilm-policy","managed_by": "Index Lifecycle Management"                      (2)}],"generation": 2,"status": "GREEN","template": "dsl-data-stream-template","lifecycle": {"enabled": true,"data_retention": "7d"},"ilm_policy": "pre-dsl-ilm-policy","next_generation_managed_by": "Data stream lifecycle",             (3)         "prefer_ilm": false,                                           "hidden": false,                                                   (4)"system": false,"allow_custom_routing": false,"replicated": false}]
}
  1. 现有支持索引将继续由 ILM 管理
  2. 现有支持索引将继续由 ILM 管理
  3. 下一代索引将由 Data stream lifecycle 管理
  4. 我们在索引模板中配置的 prefer_ilm 设置值将被反映,并将针对新的支持索引进行相应配置。

现在,我们将滚动数据流以查看由数据流生命周期管理的新一代索引:

POST dsl-data-stream/_rollover
GET _data_stream/dsl-data-stream
{"data_streams": [{"name": "dsl-data-stream","timestamp_field": {"name": "@timestamp"},"indices": [{"index_name": ".ds-dsl-data-stream-2023.10.19-000001","index_uuid": "xCEhwsp8Tey0-FLNFYVwSg","prefer_ilm": true,"ilm_policy": "pre-dsl-ilm-policy","managed_by": "Index Lifecycle Management"                    (1)          },{"index_name": ".ds-dsl-data-stream-2023.10.19-000002","index_uuid": "PA_JquKGSiKcAKBA8DJ5gw","prefer_ilm": true,"ilm_policy": "pre-dsl-ilm-policy","managed_by": "Index Lifecycle Management"                    (2)              },{"index_name": ".ds-dsl-data-stream-2023.10.19-000003",        "index_uuid": "PA_JquKGSiKcAKBA8abcd1","prefer_ilm": false,                                          (3)"ilm_policy": "pre-dsl-ilm-policy",                           "managed_by": "Data stream lifecycle"                         (4)}],"generation": 3,"status": "GREEN","template": "dsl-data-stream-template","lifecycle": {"enabled": true,"data_retention": "7d"},"ilm_policy": "pre-dsl-ilm-policy","next_generation_managed_by": "Data stream lifecycle","prefer_ilm": false,"hidden": false,"system": false,"allow_custom_routing": false,"replicated": false}]
}
  1. 翻转(rollover)前存在的后备索引将继续由 ILM 管理
  2. 翻转前存在的后备索引将继续由 ILM 管理
  3. 正如我们在索引模板中配置的那样,新的写入索引收到的 prefer_ilm 设置为 false
  4. 新的写入索引由 Data stream lifecycle 管理

将数据流迁移回 ILM

我们可以轻松地将此数据流更改为由 ILM 管理,因为我们在上面更新索引模板时没有删除 ILM 策略。

我们可以通过两种方式实现这一目标:

  1. 从数据流中删除生命周期
  2. 通过将 enabled 标志配置为 false 来禁用数据流生命周期

让我们实现选项 2 并禁用数据流生命周期:

PUT _data_stream/dsl-data-stream/_lifecycle
{"data_retention": "7d","enabled": false                            (1)
}

enabled 标志可以省略,默认为 true,但是这里我们显式地将其配置为 false 让我们检查数据流的状态:

GET _data_stream/dsl-data-stream
{"data_streams": [{"name": "dsl-data-stream","timestamp_field": {"name": "@timestamp"},"indices": [{"index_name": ".ds-dsl-data-stream-2023.10.19-000001","index_uuid": "xCEhwsp8Tey0-FLNFYVwSg","prefer_ilm": true,"ilm_policy": "pre-dsl-ilm-policy","managed_by": "Index Lifecycle Management"},{"index_name": ".ds-dsl-data-stream-2023.10.19-000002","index_uuid": "PA_JquKGSiKcAKBA8DJ5gw","prefer_ilm": true,"ilm_policy": "pre-dsl-ilm-policy","managed_by": "Index Lifecycle Management"},{"index_name": ".ds-dsl-data-stream-2023.10.19-000003","index_uuid": "PA_JquKGSiKcAKBA8abcd1","prefer_ilm": false,"ilm_policy": "pre-dsl-ilm-policy","managed_by": "Index Lifecycle Management"                }],"generation": 3,"status": "GREEN","template": "dsl-data-stream-template","lifecycle": {"enabled": false,                                          "data_retention": "7d"},"ilm_policy": "pre-dsl-ilm-policy","next_generation_managed_by": "Index Lifecycle Management",  "prefer_ilm": false,"hidden": false,"system": false,"allow_custom_routing": false,"replicated": false}]
}
  1. 写入索引现在由 ILM 管理
  2. 在数据流上配置的 lifecycle 现已禁用。
  3. 下一次写入索引将由 ILM 管理

如果我们在更新索引模板时从索引模板中删除了 ILM 策略,则数据流的写入索引现在将处于 Unmanged 状态,因为该索引不会将 ILM 策略配置为回退到之前的状态。

相关文章:

Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。 在本教程中,我们将了解如何将现有数据流&#xff0…...

LeetCode刷题记录——day6

1、https://leetcode.cn/problems/length-of-last-word/description/?envTypestudy-plan-v2&envIdtop-interview-150 直接从后往前遍历就好 class Solution { public:int lengthOfLastWord(string s) {int length0;int lens.length();for(int ilen-1;i>0;i--){if(s[i]…...

C++String类

1. 前言 String是C中操作字符串的类,它是在比较早的时候设计的STL模板,因此在某些地方设计的有些冗余 对于String类,不仅仅是学会使用它,更重要的是要从底层去理解它;本篇文章将从底层出发,模拟实现常用的S…...

Linux docker7--私有镜像仓库registry和UI搭建及使用

一、对于开源的镜像,如redis,nginx等,可以通过官方仓库Docker Hub,或者国内的阿里云等共有仓库下载获取到镜像。但是企业内对于自己的研发产品不可能往公共仓库去发布镜像的,一般都会搭建私有的镜像仓库,保…...

IDS入侵检测系统分为两大类。

一、基于签名的IDS和基于异常的IDS。 基于签名的Ids主要依赖于已知的攻击模式库来检测入侵行为,适用于检测已知的攻击模式。 基于异常的Ids则关注网络流量的行为特征,通过分析数据包之间的关系和统计模型来判断是否存在异常行为,更适用于检…...

为什么元素显示的样式跟我设置的不一样?CSS优先级详解

一、什么是CSS中的选择器优先级? 在CSS中,选择器优先级是指确定应用于元素的最相关CSS声明的算法。这个优先级决定了哪个样式规则将被应用到元素上。根据选择器的类型和特定性,CSS规定了不同的优先级,例如ID选择器比类选择器具有更…...

C语言动态内存的管理

前言 本篇博客就来探讨一下动态内存,说到内存,我们以前开辟空间大小都是固定的,不能调整这个空间大小,于是就有动态内存,可以让我们自己选择开辟多少空间,更加方便,让我们一起来看看动态内存的有…...

CASIA数据集转png HWDB2.0-2.2

https://nlpr.ia.ac.cn/databases/handwriting/Home.html CASIA在线和离线中文手写数据库 https://nlpr.ia.ac.cn/databases/handwriting/Offline_database.html CASIA-HWDB2.0-2.2 离线文本数据库是由孤立字符数据集的作者制作的。每人撰写了五页给定文本。由于数据丢失&a…...

学习或复习电路的game推荐:nandgame(NAND与非门游戏)、Turing_Complete(图灵完备)

https://www.nandgame.com/ 免费 https://store.steampowered.com/app/1444480/Turing_Complete/ 收费,70元。据说可以导出 Verilog !...

前端面试题《react》

说说React render方法的原理?在什么时候会被触发? render函数里面可以编写JSX,转化成createElement这种形式,用于生成虚拟DOM,最终转化成真实DOM 在 React 中,类组件只要执行了 setState 方法&#xff0c…...

快速入门Kotlin③类与对象

类 构造函数 主构造函数:主构造函数是类头的一部分,它跟在类名后面。主构造函数没有函数体,它可以包含初始化代码和属性声明。初始化块:init关键字修饰,它直接写在类体中。它的执行顺序与它们在类体中的出现顺序一致。 次构造函数:次要构造函数是可选的,用于提供额外…...

RUST:Arc (Atomic Reference Counted) 原子引用计数

在Rust编程语言中,Arc 是一个智能指针类型,全称为 "Atomic Reference Counted"(原子引用计数)。它的主要作用是提供线程安全的共享所有权机制,使得多个线程可以同时持有同一个数据结构的访问权,并…...

从0写一个问卷调查APP的第13天-1

1.今日任务 我也只是一个大学生,有什么思路不对的地方给我指出来哟! 分析:上次我们实现了任务调查的插入。但是我们插入的问卷调查只有它的标题,也就是这个问卷调查是什么我们告诉数据库了,但是现在我们还没有给它添加任何问题&…...

20.Python从入门到精通—参数 位置参数 关键字参数 默认参数 匿名函数 return 语句 强制位置参数

20.从入门到精通:参数 位置参数 关键字参数 默认参数 匿名函数 return 语句 强制位置参数 参数位置参数关键字参数默认参数 匿名函数return 语句强制位置参数 参数 在Python中,函数可以接受任意数量的参数,包括位置参数、关键字参数和默认参数。以下是这…...

Python爬虫之requests库

1、准备工作 pip install requests 2、实例 urllib库中的urlopen方法实际上就是以GET方式请求网页&#xff0c;requests库中相应的方法就是get方法。 import requestsr requests.get(https://www.baidu.com/) print(type(r)) # <class requests.models.Response> 响…...

鱼塘钓鱼(多路归并)

有 N 个鱼塘排成一排&#xff0c;每个鱼塘中有一定数量的鱼&#xff0c;例如&#xff1a;N5 时&#xff0c;如下表&#xff1a; 鱼塘编号12345第1分钟能钓到的鱼的数量 &#xff08;1…1000&#xff09;101420169每钓鱼1分钟钓鱼数的减少量&#xff08;1…100)24653当前鱼塘到…...

java每日一题——买啤酒(递归经典问题)

前言&#xff1a; 非常喜欢的一道题&#xff0c;经典中的经典。打好基础&#xff0c;daydayup!!!啤酒问题&#xff1a;一瓶啤酒2元&#xff0c;4个盖子可以换一瓶&#xff0c;2个空瓶可以换一瓶&#xff0c;请问10元可以喝几瓶 题目如下&#xff1a; 啤酒问题&#xff1a;一瓶…...

最近接到一个大项目,给公司设计抢商品代金劵业务

我们公司是做汽车金融方面的工作&#xff0c;在业内还挺大。目前单量来源于2&#xff0c;3线城市&#xff0c;随着大环境越老越差位了吸引他们&#xff0c; 公司决定给全国的客户&#xff0c;销售等发一些商品 1.总体学习了京东开源秒杀系统设计思路和方案。 我们公司决定进行…...

防火墙(讲解)

目录 1.防火墙是什么? 2.防火墙设备 3.防火墙功能 1)出色的控制能力&#xff0c;过滤掉不安全服务 2)过滤非法用户和访问特殊站点 3)它能够对网络存取和访问进行监控审计 4.防火墙的局限 (1)防火墙有可能是可以绕过的 (2)防火墙不能防止内部出卖性攻击或者内部误操作…...

Python之装饰器-带参装饰器

Python之装饰器-带参装饰器 带参装饰器 之后不是一个单独的标识符&#xff0c;是一个函数调用函数调用的返回值又是一个函数&#xff0c;此函数是一个无参装饰器带参装饰器&#xff0c;可以有任意个参数 func()func(1)func(1, 2) def add(x, y):"""函数说明&…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...