Elasticsearchのindexをrestoreする場合に正規表現を使えるのは知っているが、数字を扱う場合\d
が使えるのか[0-9]
の方がよいのかわからなかったので調べた
例えば、Elasticsearchのindexをバージョニングしている場合で、例えば以下のようなindexが存在している場合
- my-index-v1.1.1-apple
- my-index-v1.1.0-banana
これのスナップショットを取得して以下のようにrenameしてrestoreしたい
- restore-my-index-v1.1-apple
- restore-my-index-v.1.1-banana
restoreする際のrenameはrename_pattern
とrename_replacement
を使えばできる
POST /_snapshot/my_backup/snapshot_1/_restore { "indices": "data_stream_1,index_1,index_2", "ignore_unavailable": true, "include_global_state": false, "rename_pattern": "index_(.+)", "rename_replacement": "restored_index_$1", "include_aliases": false }
このとき使える正規表現は以下に書かれていた
これによると、\d
は使えないみたい
やりたかったことは以下で実現できた
{ "indices": [ "my-index-v1.1.1-apple", "my-index-v1.1.0-banana" ], "ignore_unavailable": true, "include_global_state": false, "include_aliases": false, "rename_pattern": "my-index-v1.1[0-9]-(.+)", "rename_replacement": "restore-my-index-v.1.1-$1" }