起因

kibana中发现从某个时间之后就没有elasticsearch中的日志,通过logstash日志看到不停有报错产生

意思是ES当前最大的分片数只有1000,并且已经占用满了,但是此时ES创建新索引时还需要2个分片。也就是说ES的分片数不够用了。

解决思路

从elasticsearch7.X版本开始(我这里部署的是7.16.2),每个node默认只允许有1000个分片,所以上述报错是因为集群分片数不足引起的,修改elasticsearch的分片数量即可

方法1

通过配置文件elasticsearch.yml修改节点(集群)分片数量,需要重启服务。(永久生效)

#在配置文件中加入配置
cluster.max_shards_per_node: 10000

重启后即可生效

方法2

通过curl命令修改分片数量

  • 临时生效
curl -XPUT -H "Content-Type:application/json" <http://localhost:9200/_cluster/settings> -d '{ "transient": { "cluster": { "max_shards_per_node": 10000 } } }'
  • 永久生效
curl -XPUT -H "Content-Type:application/json" <http://localhost:9200/_cluster/settings> -d '{ "persistent": { "cluster": { "max_shards_per_node": 10000 } } }'

查看分片数量

curl -XGET <http://localhost:9200/_cluster/settings?pretty>