常用的一般是 allocate 和 move: allocate_* 指令 因为负载过高等原因,有时候个别分片可能长期处于 UNASSIGNED 状态,我们就可以手动分配分片到指定节点上。默认情况下只允许手动分配副本分片(即使用 allocate_replica),所以如果要分配主分片,需要单独加一个 accept_data_loss 选项: # curl -XPOST 127.0.0.1:9200/_...
Elasticsearch2.X及早期版本,只需将上面脚本中的allocate_replica改为 allocate,其他不变。 上面脚本解读: 步骤1:定位 UNASSIGNED 的节点和分片 1 curl -s'10.0.8.47:9200/_cat/shards'|fgrepUNASSIGNED 步骤2:通过 allocate_replica 将 UNASSIGNED的分片重新分配。 allocate分配原理 分配unassigned的分片到一个节点。...
ES2.X及早期版本,将 allocate_replica改为 allocate,其他不变。 脚本解读: 步骤1:定位 UNASSIGNED 的节点和分片。 代码语言:javascript 复制 curl-s'localhost:9200/_cat/shards'|fgrepUNASSIGNED 步骤2:通过 allocate_replica 将 UNASSIGNED的分片重新分配。 8、核心知识点 1)路由 原理很简单,把每个用户的数据都索...
command.execute会执行 MoveAllocationCommand和AllocateReplicaAllocationCommand两个类的实现方法。 (1)MoveAllocationCommand 这里只发生在Master节点,并没有真正执行,真正的执行是在Data节点,对应的详细内容查看:腊八粥:ElasticSearch源码:索引管理--集群状态应用(1)和腊八粥:ElasticSearch源码:索引管理--集群状态应用(2)。
之前在运维过程中也遇到过UNASSIGNED这种从shard无法分配的问题,通过"allocate_replica"命令手动分配可以解决,这类问题一般都是因为node节点重启或者失联导致的shard分片异常 2、通过“GET _cluster/allocation/explain”错误信息如下: "index":"indexname","shard":3,"primary":false,"current_state":"unassigned","una...
使用move命令修改主分片的存储节点位置;使用cancel命令撤销主分片节点存储位置,使 Elasticsearch 重新分配索引分片;使用allocate_replica手动触发分片重新分配;使用allocate_stale_primary分配一个过时的副本分片来充当主分片;使用allocate_empty_primary生成一个新的空分片来充当主分片。
{"commands":[{"allocate_replica": {"index":"{indexName1}","shard": {shardId},"node":"{nodes-9}"} }]} 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 如果是主分片无法分配,可以尝试如下命令进行分配 复制 POST/_cluster/reroute ...
共做了:move 移动分片 和 allocate_replica 分配副本两个操作。 第四类:检查路由、分配规则。 许多高可用或复杂的系统使用路由或分配规则来控制分片分配,随着情况的变化,这会创建无法分配的分片。 这个时候,explain API 有助于排查问题。 3、小结 之前也写过集群红色、黄色修复方案的文章,这次的更系统化一些,更偏...
ES2.X及早期版本,将 allocate_replica改为 allocate,其他不变。 脚本解读: 步骤1:定位 UNASSIGNED 的节点和分片。 curl -s 'localhost:9200/_cat/shards' | fgrep UNASSIGNED 步骤2:通过 allocate_replica 将 UNASSIGNED的分片重新分配。 8、核心知识点 ...
共做了:move 移动分片 和 allocate_replica 分配副本两个操作。 第四类:检查路由、分配规则。 许多高可用或复杂的系统使用路由或分配规则来控制分片分配,随着情况的变化,这会创建无法分配的分片。 这个时候,explain API 有助于排查问题。 3、小结 之前也写过集群红色、黄色修复方案的文章,这次的更系统化一些,更偏...