UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Elasticsearch】restore後にindexがUNASSIGNEDのままになる

restoreを実行後にずっとUNASSIGNED のままactiveにならずに困ってしまった

結果的にインデックスを一度削除して、もう一度restoreしたら解消したので原因不明なのだが、調査中にみた以下の記事が有益だったのでまとめておく

www.datadoghq.com

Elasticsearchのバージョンは6

UNASSIGNEDの簡単な理由をしる

restore中はだいたいこのコマンドで状態をみている

$ curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason
hoge-index-1   0 p UNASSIGNED   NEW_INDEX_RESTORED
hoge-index-1   0 r UNASSIGNED   NEW_INDEX_RESTORED
hoge-index-1   0 r UNASSIGNED   NEW_INDEX_RESTORED

UNASSIGNEDの簡単な理由が表示される

通常はrestoreしたらプライマリシャードがINITIALIZINGになるのだが、UNASSIGNEDのままなのが今回の問題

理由がNEW_INDEX_RESTOREDなのはいつも通りなので情報がたりない

UNASSIGNEDの詳細をしる

以下のコマンドを実行するとUNASSIGNEDの詳細が表示される

$ curl -XGET localhost:9200/_cluster/allocation/explain?pretty
{
  "index" : "hoge-index-1",
  "shard" : 0,
  "primary" : false,
  "current_state" : "unassigned",
  "unassigned_info" : {
    "reason" : "NEW_INDEX_RESTORED",
    "at" : "2020-03-04T04:45:24.034Z",
    "details" : "restore_source[my_gcs_repository/hoge-20200304-1]",
    "last_allocation_status" : "no_attempt"
  },
  "can_allocate" : "no",
  "allocate_explanation" : "cannot allocate because allocation is not permitted to any of the nodes",
  ...
}

allocate_explanationにはcannot allocate because allocation is not permitted to any of the nodesとあるが、 このメッセージも原因を1つに特定するものではなくいくつか理由があるみたい

上に貼った記事では6つの理由が記載してあり、その理由のひとつに「ディスク容量」が関係しているらしいので、ディスク容量は十分のはずではあるが一応不要なindexを削除した上でrestoreを再実行したら解消した

「ディスク容量」が関係してたのかわからないが、つまったら一旦インデックスを削除してみるのもいいかも