diadia

興味があることをやってみる。自分のメモを残しておきます。

elasticsearch alias

インデックスにはaliasをつけられるらしい。

aliasの確認

GET sample1/_alias

GET <index_name>/_alias

aliasがない場合には空が表示される

// 結果

{
  "sample1" : {
    "aliases" : { }
  }
}

aliasの追加、更新

Create or update index alias API | Elasticsearch Reference [7.12] | Elastic

PUT sample1/_alias/my_alias

PUT <index_name>/_alias/<alias_name>

実行結果

{
  "sample1" : {
    "aliases" : {
      "my_alias" : { }
    }
  }
}

aliasの複数インデックスへの追加の注意点

ある名前のaliasは一つのインデックスのみに使えるわけではなくて、複数のインデックスに設定できる。 つまりalias Xをもつindex Aとindex Bが存在することを許容する。

しかしながら書き込み時は注意すること。書き込めるインデックスは複数設定できないっぽいので複数のインデックスにalias経由でデータを格納しようとするとエラーが出てしまう。

Is it possible to write to multiple indexes with an ElasticSearch alias? - Stack Overflow

Update index alias API | Elasticsearch Reference [7.10] | Elastic

searchをした場合当aliasをもつ複数のインデックスから結果を表示することはできる。

同一エイリアスを設定し、そのエイリアスを使ってインデックスに書き込みを実現したい場合は以下のように "is_write_index"を設定する必要があるようだ。当然true に設定するのは一つのインデックスのみ。

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "sample1",
        "alias": "my_alias",
        "is_write_index": false
      }
    },
    {
      "add": {
        "index": "sample2",
        "alias": "my_alias",
        "is_write_index": true
      }
    }
  ]
}