网站开发的技术选型,wordpress html压缩,互动营销网站,安徽炒股配资网站开发警告#xff1a;此功能处于技术预览阶段#xff0c;可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题#xff0c;但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。 在本教程中#xff0c;我们将了解如何将现有数据流#xff0… 警告此功能处于技术预览阶段可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。 在本教程中我们将了解如何将现有数据流data stream从索引生命周期管理 (ILM) 迁移到数据流生命周期。 现有的 ILM 管理的支持指数将继续由 ILM 管理直到它们过期并被 ILM 删除 但是新的支持索引将由数据流生命周期管理。 这样数据流逐渐从由 ILM 管理迁移到由数据流生命周期管理。 正如我们将看到的ILM 和数据流生命周期可以共同管理数据流 但是一个索引一次只能由一个系统管理。
如果你对 ILM 还不是很清楚的话请详细阅读文章 “ElasticsearchIndex 生命周期管理入门”。针对数据流生命周期请详细阅读文章 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}]
}
后备索引的名称。对于每个后备索引我们会显示 prefer_ilm 配置的值该值将指示在两个系统都配置了索引的情况下ILM 是否优先于数据流生命周期。为此索引配置的 ILM 策略。管理该索引的系统可能的值为 “Index Lifecycle Management”、“Data stream lifecycle” 或 “Unmanaged”将管理下一个索引的系统一旦数据流滚动该数据流的新写入索引。 可能的值为 “Index Lifecycle Management”、“Data stream lifecycle” 或 “Unmanaged”。在支持数据流的索引模板中配置的 prefer_ilm 值。 该值将为所有新的后备索引配置。 如果未在索引模板中配置则后备索引将接收 true 作为默认值默认情况下ILM 优先于数据流生命周期因为它目前功能更丰富。在支持此数据流的索引模板中配置的 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}]
}
现有支持索引将继续由 ILM 管理现有支持索引将继续由 ILM 管理下一代索引将由 Data stream lifecycle 管理我们在索引模板中配置的 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}]
}
翻转rollover前存在的后备索引将继续由 ILM 管理翻转前存在的后备索引将继续由 ILM 管理正如我们在索引模板中配置的那样新的写入索引收到的 prefer_ilm 设置为 false新的写入索引由 Data stream lifecycle 管理 将数据流迁移回 ILM
我们可以轻松地将此数据流更改为由 ILM 管理因为我们在上面更新索引模板时没有删除 ILM 策略。
我们可以通过两种方式实现这一目标
从数据流中删除生命周期通过将 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}]
}
写入索引现在由 ILM 管理在数据流上配置的 lifecycle 现已禁用。下一次写入索引将由 ILM 管理
如果我们在更新索引模板时从索引模板中删除了 ILM 策略则数据流的写入索引现在将处于 Unmanged 状态因为该索引不会将 ILM 策略配置为回退到之前的状态。