ElasticSearch 7.16.2集群:如何限制节点的主副分片数量
ElasticSearch 分片分配限制方案
针对你遇到的主分片集中到单个节点的问题,可以通过调整索引的分片分配参数来实现每个节点最多持有该索引的1个主分片与1个副本分片,具体操作如下:
1. 设置索引分片分配规则
执行以下API命令,修改目标索引的分配设置(将your_index_name替换为实际索引名):
PUT /your_index_name/_settings { "index.routing.allocation.max_primary_shards_per_node": 1, "index.routing.allocation.total_shards_per_node": 2 }
参数说明:
max_primary_shards_per_node: 限制每个节点上该索引的主分片数量最多为1,确保2个主分片会分散到不同的主节点上。total_shards_per_node: 限制每个节点上该索引的总分片(主分片+副本分片)数量最多为2,结合主分片的限制,每个节点最多再存放1个副本分片,刚好符合你的需求。
2. 触发分片重新分配
设置完成后,ElasticSearch会自动触发分片迁移来满足分配规则。如果需要立即执行,可以手动触发集群路由重计算:
POST /_cluster/reroute?retry_failed=true
注意事项
- 确保你的2个主节点均为数据节点(默认主节点同时是数据节点,若手动配置了
data: false则无法存储分片),投票节点如果仅配置了投票权(data: false),不会参与分片存储。 - 该设置仅针对目标索引生效,若需要全局生效,可修改集群默认配置,但不建议随意调整全局规则,避免影响其他索引。
内容的提问来源于stack exchange,提问作者sjsj15
相关产品推荐
相关产品推荐

