Unassigned shardsのデータがある場合の対処方法について

1台運用でのレプリカ

1台のサーバーのみでElasticsearchを運用する場合、レプリカは作成できません。 しかし、デフォルト設定ではレプリカが1になっているため、デフォルト設定のまま運用すると、レプリカに対してUnassigned shardsのデータができます。

この場合、レプリカの数を0に変更すれば、レプリカに対してUnassigned shardsのデータは無くなります。

現状の確認

以下では、active_shardsが9個、unassigned_shardsが5個が確認できます。

curl http://localhost:9200/_cluster/health?pretty
{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 9,
  "active_shards" : 9,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 5,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 64.28571428571429
}

シャードの詳細確認は以下のようになります。"r"と表示されている行がレプリカになります。 また、"p"は、プライマリシャードになります。

curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason
.kibana                         0 p STARTED    
logstash-2018.11.10             2 p STARTED    
logstash-2018.11.10             2 r UNASSIGNED CLUSTER_RECOVERED
logstash-2018.11.10             1 p STARTED    
logstash-2018.11.10             1 r UNASSIGNED CLUSTER_RECOVERED
logstash-2018.11.10             4 p STARTED    
logstash-2018.11.10             4 r UNASSIGNED CLUSTER_RECOVERED
logstash-2018.11.10             3 p STARTED    
logstash-2018.11.10             3 r UNASSIGNED CLUSTER_RECOVERED
logstash-2018.11.10             0 p STARTED    
logstash-2018.11.10             0 r UNASSIGNED CLUSTER_RECOVERED
.monitoring-es-6-2018.11.26     0 p STARTED    
.monitoring-kibana-6-2018.11.25 0 p STARTED    
.monitoring-es-6-2018.11.25     0 p STARTED    

レプリカを0にする

レプリカを0に変更すると、レプリカに対するUnassigned shardsを消すことができます。 全てのインデックスに対してレプリカを0にする場合は、以下を実行します。

curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/_settings?pretty -d '
{
    "index" : {
        "number_of_replicas" : 0
    }
}'

成功すると、以下のようなレスポンスがあります。

{
  "acknowledged" : true
}

シャードの詳細を確認すると、"UNASSIGNED CLUSTER_RECOVERED"になっていたレプリカの行が消えました。

 curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason
.kibana                         0 p STARTED 
logstash-2018.11.10             2 p STARTED 
logstash-2018.11.10             1 p STARTED 
logstash-2018.11.10             4 p STARTED 
logstash-2018.11.10             3 p STARTED 
logstash-2018.11.10             0 p STARTED 
.monitoring-es-6-2018.11.26     0 p STARTED 
.monitoring-kibana-6-2018.11.25 0 p STARTED 
shop                            0 p STARTED 
.monitoring-es-6-2018.11.25     0 p STARTED