私はESにかなり慣れていません。私は長い間データベース移行ツールを検索しようとしていましたが、見つかりませんでした。誰かが私を正しい方向に向けるのを手伝ってくれるかどうか疑問に思っています。
プロジェクトのプライマリデータストアとしてElasticsearchを使用します。プロジェクトで新しいモジュールを開発するときに実行するすべてのマッピングおよび構成の変更/データインポート/データアップグレードスクリプトをバージョン管理したいと思います。
以前は、FlywayやLiquibaseなどのデータベースバージョン管理ツールを使用していました。
同様のことを達成するためにESで使用できるフレームワーク/スクリプトまたはメソッドはありますか?
スクリプトを使用して手動でこれを実行し、少なくともアップグレードスクリプトを実行する移行スクリプトを実行した経験のある人はいますか?.
前もって感謝します!
この観点/必要性から、ESには大きな制限があります。
それはあなたの質問の文脈でどういう意味ですか?基本的に、ES用の従来の移行ツールを使用することはできません。そして、ESでの作業を簡単にする方法は次のとおりです。
厳密なマッピングを使用します("dynamic": "strict"
および/またはindex.mapper.dynamic: false
、 マッピングドキュメント を参照してください)。これにより、インデックス/タイプが
実際のESマッピングを取得して、データモデルと比較できます。 PLにES用の十分に高いレベルのライブラリがある場合、これは非常に簡単です。
移行に インデックスエイリアス を活用できます
だから、少しの経験。私にとって、現在合理的なフローはこれです:
news_index_{revision}_{date_created}
)を指すエイリアス(つまり、news
)があります。コードがデプロイされるたびに、
モデル(タイプ)マッピングを配置してみてください。エラーなしで実行された場合、これはどちらかを実行したことを意味します
これはすべて、実際には、持っているマッピング/データを使用して、いつものようにデータを操作するのが良いことを意味します
name_{revision}_{date}
のような名前)で新しいインデックス/タイプを作成しますbulk
高速再インデックス作成のリクエストを行う移行コードを起動します。この再インデックス作成中に、エイリアスを介して通常どおり新しいドキュメントに安全にインデックスを作成できます。欠点は、インデックスの再作成中に履歴データが部分的に利用できることです。これは、実稼働テスト済みのソリューションです。このようなアプローチに関する警告:
これを要約すると:
river-*
ツールのように、いつでも変更できます。