索引将索引分配过滤器与数据层节点角色混合以在数据层之间移动

编辑

索引将索引分配过滤器与数据层节点角色混合以在数据层之间移动

编辑

Elasticsearch 在 7.10 版本中标准化了 热-温-冷架构数据层的实现。某些索引和部署可能尚未完全过渡到数据层,并将实现热-温-冷架构的新方式与基于旧式节点属性的方式混合使用。

这可能导致未分配的分片或分片未过渡到所需

为了解决这个问题,请按照以下步骤操作

为了分配分片,我们需要调用 迁移到数据层路由 API,它将解决冲突的路由配置,以便使用标准化的数据层。如果需要,这将通过迁移索引模板和 ILM 策略来使系统面向未来。

使用 Kibana

  1. 登录到 Elastic Cloud 控制台
  2. Elasticsearch Service 面板上,单击您的部署名称。

    如果您的部署名称被禁用,则您的 Kibana 实例可能不健康,在这种情况下,请联系 Elastic 支持。如果您的部署不包含 Kibana,您需要做的就是先启用它

  3. 打开您的部署侧边导航菜单(位于左上角的 Elastic 徽标下),然后转到 Dev Tools > 控制台

    Kibana Console
  4. 首先,让我们停止索引生命周期管理

    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
    }
  5. 等待索引生命周期管理停止。检查状态,直到它返回 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"
    }
  6. 迁移到数据层

    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 策略。

    已迁移到层首选项路由的索引。

    已更新的旧式索引模板,不包含为提供的数据属性设置的自定义路由。

    已更新的可组合索引模板,不包含为提供的数据属性设置的自定义路由。

    已更新的组件模板,不包含为提供的数据属性设置的自定义路由。

  7. 重新启动索引生命周期管理

    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
    }