有时候我们需要重启elasticsearch集群,而集群如果感知到某个节点关闭,将延迟一分钟后开始将该节点上的分片复制到集群中的其他节点,显然我们是人为可预期的关闭,不希望进行分片的迁移。
- 禁止分片重分布
cluster.routing.allocation.enable
用于启用或禁用特定种类的分片的分配
- all - (默认值)允许为所有类型的分片分配分片。
- primaries - 仅允许分配主分片的分片。
- new_primaries - 仅允许为新索引的主分片分配分片。
- none - 任何索引都不允许任何类型的分片。
将这个值设置为primaries ,防止集群将副本分片重新分配为主分片
curl-X PUT "localhost:9200/_cluster/settings?pretty"-H'Content-Type: application/json'-d'{ "persistent": { "cluster.routing.allocation.enable": "primaries" }}'
2.执行同步刷新
curl-X POST "localhost:9200/_flush/synced?pretty"
这是将索引缓存刷新到文件中的操作,执行同步刷新时,请检查响应以确保没有失败。尽管请求本身仍返回200 OK状态,但在响应正文中列出了由于挂起索引操作而失败的同步刷新操作。
3.关闭所有节点
sudo systemctl stop elasticsearch.service
4.挨个启动节点
5.查看集群状态
curl-X GET "localhost:9200/_cat/health?pretty"curl-X GET "localhost:9200/_cat/nodes?pretty"