Niimi
November 18, 2019, 6:11am
1
これまでMS SQL Serverなどでデーターベーススキーマのバージョン管理をVisual Studioの「データベースプロジェクト」などを使って行っていました。
Elasticsearchでも同様にデータベーススキーマをバージョン管理したいと考えております。できればバージョン管理システム(Gitなど)と連動して自動でマイグレーション出来ればベストと考えております。
データベースマイグレーションツールとしては、liquibase やFlyway などが有名ですが、どちらもElasticsearchには対応していないようです。
Elasticsearchはスキーマレスでスキーマ集約型であり、Mappingは動的に変えるのは難しいということは分かっておりますが、それでもある程度indexやmappingのバージョン管理は必要かと思っています。
なにか良いツール、運用方法などありましたらば、御助言いただければ幸いです。
tsgkdt
(tsgkdt)
November 18, 2019, 7:34am
2
こんにちわ。ほんの1例ですが参考までに。
Mappingについては、Index Templateで管理するようにし、Index Templateにはバージョンを持つようにします。
基本的には、このファイル(json)をGitなりで管理して、使うようにしています。
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html#versioning-templates
バージョンを埋め込んでおくと、どのバージョンのテンプレートが現在有効なのか? というのが分かりやすくなります。
あとは、テンプレートでdynamicをどうするかを考えます。
データ登録時に、Templateに未登録のフィールドがあったらどうするか?ということです。
ユーザに好き勝手にフィールドを増やされたくない! 完全にスキーマを固定してしまいたい!
ということなら、dynamic: strict というようなパターンが考えられるかと思います。
https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic.html
ご参考になれば幸いです。
1 Like
Niimi
November 20, 2019, 12:07am
3
tsgkdtさん、コメントありがとうございます。
なるほど、Index Templateをバージョン管理するのですね。検討してみます。
あとは、dynamicについては失念していました。elasticsearchならそこも考えないといけないですね。勉強します。
他にツール等使っている人などはいらっしゃいませんか?
Elasticsearch Beyonder , Elasticsearch Migration , generator-jhipster-elasticsearch-reindexer などが関連していそうなのを見つけましたが、buildできなかったり使い方が分からなかったりで挫折しています。
system
(system)
Closed
December 18, 2019, 12:07am
4
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.