意思是ES当前最大的分片数只有1000,并且已经占用满了,但是此时ES创建新索引时还需要2个分片。也就是说ES的分片数不够用了。
问题解决:
从Elasticsearch7.X版本开始,每个node默认只允许有1000个分片,所以上述报错是因为集群分片数不足引起的。
修改ES的分片数量
1、通过配置文件elasticsearch.yml修改节点(集群)分片数量,需要重启服务。(永久生效)
cluster.max_shards_per_node: 90000
2、通过curl命令修改分片数量
集群更新 API 有两种工作模式:
临时(Transient)
这些变更在集群重启之前一直会生效。一旦整个集群重启,这些配置就被清除。
永久(Persistent)
这些变更会永久存在直到被显式修改。即使全集群重启它们也会存活下来并覆盖掉静态配置文件里的选项。
临时或永久配置需要在 JSON 体里分别指定。
- 临时生效
curl -XPUT -H "Content-Type:application/json" http://localhost:9200/_cluster/settings -d '{ "transient": { "cluster": { "max_shards_per_node": 50000 } } }'
- 永久生效
curl -XPUT -H "Content-Type:application/json" http://localhost:9200/_cluster/settings -d '{ "persistent": { "cluster": { "max_shards_per_node": 5000 } } }'
curl -XGET http://localhost:9200/_cluster/settings?pretty