elasticsearch Unassigned Shards 排查思路

curl -XPUT 'localhost:9200/<INDEX_NAME>/_settings' -d '{"number_of_replicas": 2}

 

curl -XPUT -H "Content-Type: application/json" 'localhost:9200/_all/_settings' -d '{"number_of_replicas": 0}'   //小心用 ,_all代表所有索引

 

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'  查看状态

curl -XDELETE 'localhost:9200/_all'  删除所有索引

 

 curl -XDELETE 'localhost:9200/<INDEX_NAME>'

 

curl -XGET http://localhost:9200/_cat/shards |grep UNASSIGNED   查看 Unassigned Shards

关闭unassigned_shards

关闭未分配的分片是Elasticsearch集群管理的一个常见操作,通常用于数据迁移或维护。在Elasticsearch中,未分配的分片是指那些因为某种原因(比如节点失效)从其原始分配位置移除的分片。

要关闭未分配的分片,可以使用以下Elasticsearch API命令:

 
 
POST /_cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "none"
}
}

这个命令会暂时关闭分片分配,使得集群不会自动分配那些未分配的分片。

如果你想要在以后重新启用分片分配,可以执行以下命令:

 
 
POST /_cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}

请注意,这些操作应该谨慎执行,并且通常只在维护期间需要,比如在数据迁移或者节点升级期间。

在某些情况下,你可能想要手动分配未分配的分片。可以使用以下命令手动分配分片:

 
 
POST /_cluster/reroute
{
"commands": [
{
"allocate": {
"index": "index_name",
"shard": 0,
"node": "node_name",
"allow_primary": true
}
}
// 可以添加更多的命令来手动分配更多的分片
]
}

在这个例子中,index_name 是问题分片所在的索引名称,shard 是分片的编号,node_name 是你想要分配分片的节点名称。allow_primary 是一个布尔值,表示是否允许将主分片分配到一个节点上

posted @ 2024-06-06 11:11  技术颜良  阅读(22)  评论(0编辑  收藏  举报