赞
踩
警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。
在本教程中,我们将了解如何将现有数据流(data stream)从索引生命周期管理 (ILM) 迁移到数据流生命周期。 现有的 ILM 管理的支持指数将继续由 ILM 管理,直到它们过期并被 ILM 删除; 但是,新的支持索引将由数据流生命周期管理。 这样,数据流逐渐从由 ILM 管理迁移到由数据流生命周期管理。 正如我们将看到的,ILM 和数据流生命周期可以共同管理数据流; 但是,一个索引一次只能由一个系统管理。
如果你对 ILM 还不是很清楚的话,请详细阅读文章 “Elasticsearch:Index 生命周期管理入门”。针对数据流生命周期,请详细阅读文章 "Data streams(一)(二)(三)"
要将数据流从 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
- }
- ]
- }
要将 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)
- }
- }
- }
我们现在已经确保新的数据流将由数据流生命周期进行管理。让我们更新现有的 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
- }
- ]
- }
现在,我们将滚动数据流以查看由数据流生命周期管理的新一代索引:
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
- }
- ]
- }
我们可以轻松地将此数据流更改为由 ILM 管理,因为我们在上面更新索引模板时没有删除 ILM 策略。
我们可以通过两种方式实现这一目标:
让我们实现选项 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
- }
- ]
- }
如果我们在更新索引模板时从索引模板中删除了 ILM 策略,则数据流的写入索引现在将处于 Unmanged 状态,因为该索引不会将 ILM 策略配置为回退到之前的状态。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。