restoreを実行後にずっとUNASSIGNED のままactiveにならずに困ってしまった
結果的にインデックスを一度削除して、もう一度restoreしたら解消したので原因不明なのだが、調査中にみた以下の記事が有益だったのでまとめておく
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を再実行したら解消した
「ディスク容量」が関係してたのかわからないが、つまったら一旦インデックスを削除してみるのもいいかも