索引将索引分配过滤器与数据层节点角色混合以在数据层之间移动
编辑索引将索引分配过滤器与数据层节点角色混合以在数据层之间移动
编辑Elasticsearch 在 7.10 版本中标准化了 热-温-冷架构到数据层的实现。某些索引和部署可能尚未完全过渡到数据层,并将实现热-温-冷架构的新方式与基于旧式节点属性的方式混合使用。
这可能导致未分配的分片或分片未过渡到所需层。
为了解决这个问题,请按照以下步骤操作
为了分配分片,我们需要调用 迁移到数据层路由 API,它将解决冲突的路由配置,以便使用标准化的数据层。如果需要,这将通过迁移索引模板和 ILM 策略来使系统面向未来。
使用 Kibana
- 登录到 Elastic Cloud 控制台。
-
在 Elasticsearch Service 面板上,单击您的部署名称。
如果您的部署名称被禁用,则您的 Kibana 实例可能不健康,在这种情况下,请联系 Elastic 支持。如果您的部署不包含 Kibana,您需要做的就是先启用它。
-
打开您的部署侧边导航菜单(位于左上角的 Elastic 徽标下),然后转到 Dev Tools > 控制台。
-
首先,让我们停止索引生命周期管理
resp = client.ilm.stop() print(resp)
response = client.ilm.stop puts response
const response = await client.ilm.stop(); console.log(response);
POST /_ilm/stop
响应将如下所示
{ "acknowledged": true }
-
等待索引生命周期管理停止。检查状态,直到它返回
STOPPED
,如下所示resp = client.ilm.get_status() print(resp)
response = client.ilm.get_status puts response
const response = await client.ilm.getStatus(); console.log(response);
GET /_ilm/status
当索引生命周期管理成功停止时,响应将如下所示
{ "operation_mode": "STOPPED" }
-
resp = client.ilm.migrate_to_data_tiers() print(resp)
response = client.ilm.migrate_to_data_tiers puts response
const response = await client.ilm.migrateToDataTiers(); console.log(response);
POST /_ilm/migrate_to_data_tiers
响应将如下所示
{ "dry_run": false, "migrated_ilm_policies":["policy_with_allocate_action"], "migrated_indices":["warm-index-to-migrate-000001"], "migrated_legacy_templates":["a-legacy-template"], "migrated_composable_templates":["a-composable-template"], "migrated_component_templates":["a-component-template"] }
已更新的 ILM 策略。
已迁移到层首选项路由的索引。
已更新的旧式索引模板,不包含为提供的数据属性设置的自定义路由。
已更新的可组合索引模板,不包含为提供的数据属性设置的自定义路由。
已更新的组件模板,不包含为提供的数据属性设置的自定义路由。
-
重新启动索引生命周期管理
resp = client.ilm.start() print(resp)
response = client.ilm.start puts response
const response = await client.ilm.start(); console.log(response);
POST /_ilm/start
响应将如下所示
{ "acknowledged": true }
为了分配分片,我们需要确保部署正在使用数据层节点角色,然后调用 迁移到数据层路由 API,它将解决冲突的路由配置,以便使用标准化的数据层。如果需要,这将通过迁移索引模板和 ILM 策略来使系统面向未来。
-
如果您的部署尚未使用数据层,请将数据节点分配到适当的数据层。为每个数据节点配置适当的角色,以将其分配到一个或多个数据层:
data_hot
、data_content
、data_warm
、data_cold
或data_frozen
。例如,以下设置将节点配置为热层和内容层中的仅数据节点。node.roles [ data_hot, data_content ]
-
停止索引生命周期管理
resp = client.ilm.stop() print(resp)
response = client.ilm.stop puts response
const response = await client.ilm.stop(); console.log(response);
POST /_ilm/stop
响应将如下所示
{ "acknowledged": true }
-
等待索引生命周期管理停止。检查状态,直到它返回
STOPPED
,如下所示resp = client.ilm.get_status() print(resp)
response = client.ilm.get_status puts response
const response = await client.ilm.getStatus(); console.log(response);
GET /_ilm/status
当索引生命周期管理成功停止时,响应将如下所示
{ "operation_mode": "STOPPED" }
-
resp = client.ilm.migrate_to_data_tiers() print(resp)
response = client.ilm.migrate_to_data_tiers puts response
const response = await client.ilm.migrateToDataTiers(); console.log(response);
POST /_ilm/migrate_to_data_tiers
响应将如下所示
{ "dry_run": false, "migrated_ilm_policies":["policy_with_allocate_action"], "migrated_indices":["warm-index-to-migrate-000001"], "migrated_legacy_templates":["a-legacy-template"], "migrated_composable_templates":["a-composable-template"], "migrated_component_templates":["a-component-template"] }
已更新的 ILM 策略。
已迁移到层首选项路由的索引。
已更新的旧式索引模板,不包含为提供的数据属性设置的自定义路由。
已更新的可组合索引模板,不包含为提供的数据属性设置的自定义路由。
已更新的组件模板,不包含为提供的数据属性设置的自定义路由。
-
重新启动索引生命周期管理
resp = client.ilm.start() print(resp)
response = client.ilm.start puts response
const response = await client.ilm.start(); console.log(response);
POST /_ilm/start
响应将如下所示
{ "acknowledged": true }