ES-Elasticsearch集群常见问题--Unassigned

问题一、索引出现Unassigned

问题如图
ES-Elasticsearch集群常见问题--Unassigned_第1张图片
问题出现原因:由于该索引的主分片的副本未分配成功导致。(根本原因应该是内存紧张)
解决方式:
1.确定有问题的索引列表(通过kibana查看:Kibana提供了Console UI来通过REST API与Elasticsearch交互,Console位于Kibana的Dev Tools栏下。)

#查询索引列表及状态
 GET  /_cat/shards?v&h=index,shard,prirep,state,unassigned.reason
 
 #查询结果如下
index shard prirep   state unassigned.reason 
gaczrk 4 p      STARTED                      
gaczrk 4 r      UNASSIGNED CLUSTER_RECOVERED 
gaczrk 2 p      STARTED                      
gaczrk 2 r      UNASSIGNED CLUSTER_RECOVERED 
gaczrk 1     p      STARTED
#原因
INDEX_CREATED:  由于创建索引的API导致未分配。
CLUSTER_RECOVERED:  由于完全集群恢复导致未分配。
INDEX_REOPENED:  由于打开open或关闭close一个索引导致未分配。
DANGLING_INDEX_IMPORTED:  由于导入dangling索引的结果导致未分配。
NEW_INDEX_RESTORED:  由于恢复到新索引导致未分配。
EXISTING_INDEX_RESTORED:  由于恢复到已关闭的索引导致未分配。
REPLICA_ADDED:  由于显式添加副本分片导致未分配。
ALLOCATION_FAILED:  由于分片分配失败导致未分配。
NODE_LEFT:  由于承载该分片的节点离开集群导致未分配。
REINITIALIZED:  由于当分片从开始移动到初始化时导致未分配(例如,使用影子shadow副本分片)。
REROUTE_CANCELLED:  作为显式取消重新路由命令的结果取消分配。
REALLOCATED_REPLICA:  确定更好的副本位置被标定使用,导致现有的副本分配被取消,出现未分配。

# 2.查询单个索引配置信息
GET /driver-2021.03.03/_settings
# 结果如下
{
 "driver-2021.03.04" : {
   "settings" : {
     "index" : {
       "refresh_interval" : "5s",
       "number_of_shards" : "1",
       "provided_name" : "driver-2021.03.04",
       "creation_date" : "1614729630195",
       "number_of_replicas" : "1",
       "uuid" : "vUOn0P-9TkKCojmsEEjCdg",
       "version" : {
         "created" : "7060199"
       }
     }
   }
 }
}
#3.查询单个索引分片信息
GET /driver-2021.03.04/_search_shards
#结果如下:
{
 "nodes" : {
   "qKQnEdF6TMePf9GLiH-4Ng" : {
     "name" : "es-node2",
     "ephemeral_id" : "ksU4VNkhR4iMI-mPHOLu0Q",
     "transport_address" : "",
     "attributes" : {
       "ml.machine_memory" : "33531363328",
       "xpack.installed" : "true",
       "ml.max_open_jobs" : "20"
     }
   }
 },
 "indices" : {
   "driver-2021.03.04" : { }
 },
 "shards" : [
   [
     {
       "state" : "STARTED",
       "primary" : true,
       "node" : "qKQnEdF6TMePf9GLiH-4Ng",
       "relocating_node" : null,
       "shard" : 0,
       "index" : "driver-2021.03.04",
       "allocation_id" : {
         "id" : "q3luk6zmSw29aO16ZplWXw"
       }
     }
   ]
 ]
}
##结合2,3分析:
##  number_of_shards(每个索引的主分片数) 1
##  number_of_replicas(每个主分片的副本数)1
## 分片所占节点数=副本数+1
实际节点数就只有一个,所以是索引的副本未分配

解决方式:重新分配副本数
即.重置副本数

#1.先将该索引的副本数设为0
PUT /driver-2021.03.04/_settings
{
    "number_of_replicas": 0
}
#2.再重新设置副本数
PUT /driver-2021.03.04/_settings
{
    "number_of_replicas": 1
}

参考文档:
官方文档:索引设置
Elasticsearch学习之集群常见状况处理(干货)
Elasticsearch集群UNASSIGNED shareds问题 修复
elasticsearch查询某个索引分片信息
Elasticsearch 7.X : 设置索引副本数量和分片数量

你可能感兴趣的:(ES-Elasticsearch集群常见问题--Unassigned)