允许 Elasticsearch 分配系统中的数据

编辑

允许 Elasticsearch 分配系统中的数据

编辑

Elasticsearch 部署中数据的分配可以通过 启用集群分配配置 来控制。在某些情况下,用户可能希望暂时禁用或限制系统中数据的分配。

忘记重新允许所有数据分配会导致分片未分配。

为了(重新)允许分配所有数据,请按照以下步骤操作

为了分配分片,我们需要更改 配置 的值,该配置限制分片的分配,以允许分配所有分片。

我们将通过检查系统范围的 cluster.routing.allocation.enable 集群设置 并将其配置的值更改为 all 来实现此目的。

使用 Kibana

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

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

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

    Kibana Console
  4. 检查 cluster.routing.allocation.enable 集群设置

    resp = client.cluster.get_settings(
        flat_settings=True,
    )
    print(resp)
    response = client.cluster.get_settings(
      flat_settings: true
    )
    puts response
    const response = await client.cluster.getSettings({
      flat_settings: "true",
    });
    console.log(response);
    GET /_cluster/settings?flat_settings

    响应将如下所示

    {
      "persistent": {
        "cluster.routing.allocation.enable": "none" 
      },
      "transient": {}
    }

    表示当前配置的值,该值控制是否允许部分或全部数据在系统中分配。

  5. 更改 配置 值以允许完全分配系统中的所有数据

    resp = client.cluster.put_settings(
        persistent={
            "cluster.routing.allocation.enable": "all"
        },
    )
    print(resp)
    response = client.cluster.put_settings(
      body: {
        persistent: {
          'cluster.routing.allocation.enable' => 'all'
        }
      }
    )
    puts response
    const response = await client.cluster.putSettings({
      persistent: {
        "cluster.routing.allocation.enable": "all",
      },
    });
    console.log(response);
    PUT _cluster/settings
    {
      "persistent" : {
        "cluster.routing.allocation.enable" : "all" 
      }
    }

    已将 allocation.enable 系统范围配置的新值更改为允许分配所有分片。