Elasticsearch

[Elasticsearch] インデックスを無停止(リアルタイム)で再構築する

[Elasticsearch] インデックスを無停止(リアルタイム)で再構築する

背景

仕様変更でフィールドの追加や マッピングの変更 などが良く発生しますが、
Elasticsearch に関わらずほとんどの検索エンジンは
検索・インデックス仕様の変更をする際、 インデクスを再作成する必要があります。
エイリアスを利用すると、その変更を 無停止(リアルタイム)でできるようになります。

仕組み

Elasticsearch の公式ブログでも紹介されています。
Changing Mapping with Zero Downtime

Elasticsearch では、インデックスに対して、
エイリアス(別名)をつけることができます。
Index Aliases の仕組みを利用することでこれを実現できるそうです。

例えば、spots-v1 というインデックスに対して、spots というエイリアスを付与した場合、spots に対して行った操作は、実際には spots-v1 に対して行われるようになります。

新しいマッピング定義でインデックスを作り直す場合には、裏側で spots-v2 を作っておき、準備完了後に spots-v2spots エイリアスを貼り替えることで、サービスを停止することなくインデックスの再構築ができるというわけです。

参考


コメントを残す