UGA Boxxx

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

【Elasticsearch】restore時に正規表現をつかってrenameする

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_patternrename_replacementを使えばできる

www.elastic.co

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
}

このとき使える正規表現は以下に書かれていた

www.elastic.co

これによると、\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"
}