允许 Elasticsearch 在系统中分配数据

编辑

允许 Elasticsearch 在系统中分配数据

编辑

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

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

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

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

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

使用 Kibana

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

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

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

    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 的新值已更改为允许分配所有分片。