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" }