Elasticsearchのエイリアス設定方法
AWS上のAmazon Elasticsearch Serviceで実施しています。
エイリアスとは名前の通り、インデックスに対して別名をつけることが可能になる。エイリアスとインデックスは1対1の関係ではなく、一つのエイリアスに複数のインデックスを紐付けることが出来る。
インデックスの作成
まずは事前準備としてインデックスを作成。
curl -X PUT "https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/my_index1"
curl -X PUT "https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/my_index2"
データ登録(my_index1用)
後ほどエイリアスを使用した検索を実施するのでテスト用のデータを挿入
curl -H "Content-Type: application/json" -X PUT "https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/my_index1/_doc/1" -d '
{
"title": "my_index1",
"comments": {
"name": "my_index1",
"comment": "my_index1用のデータ"
}
}'
データ登録(my_index2用)
curl -H "Content-Type: application/json" -X PUT "https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/my_index2/_doc/1" -d '
{
"title": "my_index2",
"comments": {
"name": "my_index2",
"comment": "my_index2のデータ"
}
}'
エイリアスの確認
cu
初期状態なので特にエイリアスは設定されていない
{
"amazon_neptune" : {
"aliases" : { }
},
".kibana_1" : {
"aliases" : {
".kibana" : { }
}
},
"my_index2" : {
"aliases" : { }
},
"my_index1" : {
"aliases" : { }
}
}
エイリアスの作成
my_index1
のエイリアスであるmy_ind
を作成してみる
curl -H "Content-Type: application/json" -XPOST 'https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/_aliases' -d '
{
"actions" : [
{ "add" : { "index" : "my_index1", "alias" : "my_ind" } }
]
}'
エイリアスの確認
curl https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/_aliases?pretty
my_indが作成されている
"my_index2" : {
"aliases" : { }
},
"my_index1" : {
"aliases" : {
"my_ind" : { }
}
この状態で検索をしてみるとmy_index1
用のデータが出力される。
curl https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/my_ind/_search?pretty
エイリアスの変更
次にエイリアスの設定変更をすることでインデックスの切替を実施する
curl -H "Content-Type: application/json" -XPOST 'https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/_aliases' -d '
{
"actions" : [
{ "remove" : { "index" : "my_index1", "alias" : "my_ind" } },
{ "add" : { "index" : "my_index2", "alias" : "my_ind" } }
]
}'
エイリアスの確認
curl https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/_aliases?pretty
先程とは異なりmy_index2
用のエイリアスが作成されている。my_index1
のエイリアスは削除され存在しない。
"my_index2" : {
"aliases" : {
"my_ind" : { }
}
},
"my_index1" : {
"aliases" : { }
}
エイリアスを使用した検索
curl https://vpc-xxxxxxxx-xxxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com/my_ind/_search?pretty
このエイリアス機能を使用することでダウンタイムを無くしてインデックスの切替が実施出来る。
Changing Mapping with Zero Downtime | Elastic Blog https://www.elastic.co/jp/blog/changing-mapping-with-zero-downtime/
Elasticsearch のインデックスを無停止で再構築する - クックパッド開発者ブログ https://techlife.cookpad.com/entry/2015/09/25/170000
関連しているかもしれない記事
- Elasticsearchのマスターノードの確認
- Aurora PostgreSQL でリードレプリカかプライマリか見分ける方法
- EC2にElasticsearch + kibanaをインストールする
- Neptuneインスタンスの監査ログを取得する方法
- Neptuneインスタンスのヘルスステータスをcurlコマンドで取得する方法