2017-03-05 4 views
1

私はElasticSearchでほぼリアルタイムでインデックスが必要なSQLServerのテーブルを扱っています。このテーブルでは、さまざまなポイント(レガシーコード、ストアドプロシージャなど)からレコードが追加/更新/削除されるため、このテーブルと対話するすべての領域を見つけるコードを実行することは実現不可能です。どのような技術やツールがこれを可能にしますか?ElasticSearchをコードなしでSQLServerで最新の状態に保つにはどうすればいいですか?

注:SQLServerのテーブルには、約10個の列が含まれ、最大100万行まで含めることができます。

答えて

2

最小限のコードで実行したい場合は、Logstash jdbcプラグインを使用して設定することができます(これで、River ConceptはElasticsearchではサポートされなくなりました)。テーブルには、最後に更新されたタイムスタンプ列があります。前回の実行以降に変更を取得できるように、ポーリングクエリを基にしてポーリングクエリを構成することができます。このタイムスタンプ列にインデックスが定義されていることを確認してください。これはポーリングプロセスなので、ボードに乗り込まずに非常に低いポーリング間隔を設定すると、SQL DBサーバーに不必要な作業負荷がかかる可能性があります。

正しい方法でコードを書く準備ができたら、おそらくSQL Serverサービスブローカーオプションを検討する必要があります。テーブルにトリガをかけてメッセージを書き込んだり、外部のポーリング/トリガプロセスをキューに入れてメッセージ/変更を取得して、Elasticsearchにプッシュすることができます。

+0

迅速な対応に感謝します。ポーリング間隔を低く保つと言いましたが、あなたはElasticSearchではなくSQLServerのみを心配していましたか? –

+0

右。私はSQL Server DBの負荷について話していました。いくつかのテストでは、SQL Serverの負荷が不必要に増加することなく、どの周波数が許容できるかを判断できるはずです。 – askids

関連する問題