2

ES サーバーの更新に問題があった場合に備えて、次のことを実行する毎日のスクリプトを検討しています (私はまだ高可用性のセットアップを行っていませんが、それでもおそらくDB と ES の間でデータが複製されている状況では良い方法です)。このスクリプトをまとめる前に、これが正しい方法で行われているかどうか、使用すべきライブラリやテクニックがあるかどうかを確認しようと思いました。

このスクリプトは、データベースからすべての ID を取得し、ElasticSearch からすべての ID を取得しますcreated_at < current_time(スクリプトの実行時に移動するターゲットであるため、現在の時刻のスナップショット)。次に、これらの ID セットの違いに基づいて、エラスティック検索に追加および削除します。

これは合理的なアプローチのように聞こえますか?

4

2 に答える 2

3

私の質問に答えるには、これは最善のアプローチではありません。

リソースを集中的に使用する場合でも、より簡単なアプローチは、インデックス全体を定期的に再構築することです。もちろん、数分または数時間のダウンタイムが発生するため、本番環境でこれを行うのは困難です。そのため、新しいインデックスを再構築して、それを使用するように切り替えるのが秘訣です。ElasticSearch では、インデックスの名前を変更することはできませんが、エイリアスを使用できます。

アプローチに関する議論はこちらにあり、Tire ユーザー向けのレーキ タスクはこちらにあります。

于 2012-09-19T19:54:23.807 に答える
0

jdbc-riverプラグインをご覧ください。このプラグインはかなり安定しており、ES とデータベースの間でデータを同期するために使用できます。

于 2012-08-14T14:05:31.050 に答える