Elasticsearchでエイリアスの作成の方法です。
基本的にサービス提供で利用する場合にはElasticsearchではエイリアスを作成しての運用が向いています。
indexを時間などをつけたもので作成し、indexを変更する際にはエイリアスを切り替えるなどの運用面でのメリットは大きいです。
indexの再作成なども運用を行なっていると発生するのでそちらも向いています。 テストなどの時にも便利ですよね。 それでは実際に作成しています。
エイリアスの確認
ますエイリアスの確認を行います。
「index1_v1」と「index2_v1」というindexがあるだけの状態です。
1 2 3 4 5 6 7 8 9 10 11 |
$ curl -XGET 'localhost:9200/*/_alias?pretty=true' { "index1_v1" : { "aliases" : { } }, "index2_v1" : { "aliases" : { } } } |
ここにそれぞれ「index1」と「index2」というエイリアスを作成します。
作成は一気に行うことができます。
1 2 3 4 5 6 7 8 9 |
curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/_aliases' -d ' { "actions" : [ { "add" : { "index" : "index1_v1", "alias" : "index1" } }, { "add" : { "index" : "index2_v1", "alias" : "index2" } } ] }' |
追加した状態でエイリアスの確認を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ curl -XGET 'localhost:9200/*/_alias?pretty=true' { "index1_v1" : { "aliases" : { "index1" : { } } }, "index2_v1" : { "aliases" : { "index2" : { } } } } |
「index1_v2」と「index2_v2」というindexを作成した場合には以下のような手順でエイリアスの変更を行います。
1 2 3 4 5 6 7 8 9 10 11 |
$ curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/_aliases' -d ' { "actions" : [ { "add" : { "index" : "index1_v2", "alias" : "index1" } }, { "remove" : { "index" : "index1_v1", "alias" : "index1" } }, { "add" : { "index" : "index2_v2", "alias" : "index2" } }, { "remove" : { "index" : "index2_v1", "alias" : "index2" } } ] }' |
これでindex1は無停止の状態でindexの切り替えを行うことができました。
フィルターをつけたエイリアス
エイリアスは以下のようにフィルターを追加したものでも設定できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ curl -H "Content-Type: application/json" -XPOST 'http://localhost:9200/_aliases' -d ' { "actions" : [ { "add" : { "index" : "index1_v1", "alias" : "index1_active" , "filter": { "term": {"status": "active"} } } } ] }' |
アクティブなものやセール中のもの、在庫数があるもの、特定の年代のものなど様々な用途でindexの派生版を作ることができます
非常に便利なエイリアス機能。
ざっとでしたが今回はこの辺で。
このブログは株式会社CoLabMixによる技術ブログです。
GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。
Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。