修改默认ElasticSearch集群的分片数限制

背景

收到一个学员的问题,在创建索引的时候,提示如下报错:

原因分析:

如果不去更改es的默认配置,es集群的默认最大分片数是1000,所以你需要调大ElasticSearch的默认分片数从而来来容纳更多的数据。

解决:

(1)使用Head插件或者Kiabana的Dev Tools 执行如下命令(通过下面的命令重启es会失效,因为 transient 是临时生效的):

PUT /_cluster/settings
{
  "transient": {
    "cluster": {
      "max_shards_per_node":900000
    }
  }
}

(2) 当然你也可以直接修改 elasticsearch.yml的配置文件,设置成你想要的值,然后再重启。通过配置文件修改的参数是永久生效的。

cluster.max_shards_per_node: 900000

查看是否生效

GET /_cluster/settings?pretty

{
  "persistent" : {
    "xpack" : {
      "monitoring" : {
        "collection" : {
          "enabled" : "true"
        }
      }
    }
  },
  "transient" : {
    "cluster" : {
      "max_shards_per_node" : "900000"
    }
  }
}

(3)如果想要通过CURL方式永久生效而不去修改配置文件如何实现了?

我们来看看官方文档怎么讲的:

官网: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/cluster-update-settings.html

我们翻译成中文是这样子:

Elasticsearch 里很多设置都是动态的,可以通过 API 修改。需要强制重启节点(或者集群)的配置修改都要极力避免。而且虽然通过静态配置项也可以完成这些变更,我们建议你还是用 API 来实现。

集群更新 API 有两种工作模式:

临时(Transient)

这些变更在集群重启之前一直会生效。一旦整个集群重启,这些配置就被清除。

永久(Persistent)

这些变更会永久存在直到被显式修改。即使全集群重启它们也会存活下来并覆盖掉静态配置文件里的选项。

临时或永久配置需要在 JSON 体里分别指定。

改成如下:

PUT /_cluster/settings
{
  "persistent": {
    "cluster": {
      "max_shards_per_node":900000
    }
  }
}

重启ES之后再去查查看是否生效了。

{
  "persistent" : {
    "cluster" : {
      "max_shards_per_node" : "900000"
    },
    "indices" : {
      "breaker" : {
        "total" : {
          "limit" : "95%"
        }
      }
    },
    "xpack" : {
      "monitoring" : {
        "collection" : {
          "enabled" : "true"
        }
      }
    }
  }

}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叱咤少帅(少帅)

如果文章对你有帮助就打赏下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值