ES
集群重新路由命令可以显示的执行包括特定命令的集群重新路由分配命令。例如,可以显示地将分片从一个节点移动到另一个节点,可以取消分配。
使用
支持的命令如下
move
将现有的分片迁移到其他节点。接受index
和shard
索引名称和分片编号,from_node
节点移动分片from
,以及to_node
节点将分片移动到。cancel
取消分享碎片(或恢复)。接受index
和shard
索引名称和分片编号,以及node
取消分片分配的节点。它还接受allow_primary
标志以明确指定允许取消主分片的分配。这可以用于强制从主分片重新同步现有副本,方法是取消它们并允许它们通过标准重新分配过程重新初始化。allocate_replica
将未分配的副本分片分配给节点。接受index
和shard
索引名称和分片编号,并将分片分配给node
。
使用场景
move
主要是想要手动控制分片分配到某台固定的机器上。把node_1
上的index_name
移动到node_2
节点上,可能会有各种原因需要进行迁移,比如node_1
机器的磁盘不够了或者是其他原因等。
POST _cluster/reroute
{
"commands": [
{
"move": {
"index": "index_name",
"shard": 0,
"from_node": "node_1",
"to_node": "node_2"
}
}
]
}
cancel
主要是把移动中的分片取消,这个是因为其他原因导致分片重新分配了,但是又不想让它重新分配,所以只能取消分片分配的过程。如下是node_1
这台机器上的index_name
的分片号0
进行了移动,所以取消它。
POST _cluster/reroute
{
"commands": [
{
"cancel": {
"index": "index_name",
"shard": 0,
"node": "node_1"
}
}
]
}