5

ElasticSearch 用に JDBC リバーを構成していますが、適切な構成例が見つかりません。elasticsearch-river-jdbc GitHubのすべてのページを読みました。

SQL クエリがあり、X 秒ごとにすべてのテーブル列から変更をフェッチする必要があります。一部の行が変更され、再インデックス化する必要があることを JDBC 川に伝えるにはどうすればよいですか?

データは ES サーバーの起動時にフェッチされ、ポーリングが行われますが、変更は DB から ES にフェッチされません。

私の構成:

curl -XPUT 'localhost:9200/_river/itemsi/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
    "driver" : "com.mysql.jdbc.Driver",
    "url" : "jdbc:mysql://mydb.com:3306/dbname",
    "user" : "yyy",
    "password" : "xxx",
    "sql" : "SELECT ii.id AS _id, ii.id AS myid, ... FROM ... LEFT JOIN .. ON...",
    "poll" : "6s",
    "strategy" : "simple"
    },
"index" : {
    "index" : "invoiceitems",
    "bulk_size" : 600,
    "max_bulk_requests" : 10,
    "bulk_timeout" : "5s",
    }
}'

ありがとうございました。

4

3 に答える 3

2

jdbc River プラグインの繰り返し実行を有効にするスケジュール パラメータを使用できます。

スケジュール パラメータの例:

"schedule" : "0 0-59 0-23 ? * *"

これにより、毎分、毎時、週/月/年のすべての日に JDBC リバーが実行されます。

スケジュール パラメータの詳細については、 https://github.com/jprante/elasticsearch-river-jdbcのドキュメントを参照してください。

于 2014-11-28T10:21:10.863 に答える
1

追加

「オートコミット」:真

インデックス設定で。その後、問題は解決されます

于 2013-10-15T05:14:46.640 に答える
0

私は現在、Informix DB の大規模なインデックスを実行するソリューションを構築しているため、これについては私の意見を述べるだけです。だからここに私の現在の思考プロセスがありますが、テストも実装もされていません -

私が計画しているのは、コアデータベース自体のワンショットインデックスを実行し、そこからトリガーを実装して、更新されたレコードや新しいレコードを別のテーブルに起動することです。明らかに、最初のインデックスを実行したら、そのリバーを削除して、プライマリ インデックスの再実行を停止します。ここから、たとえば 15 分ごとに更新されたレコードや新しいレコードを含むテーブルをポーリングするリバーを定義します。これをESにロードします。

実際のDB内のIDフィールドからレコードのIDを設定できるRiverプラグイン内の機能を認識していないため、まだよくわかっていません。記録し、ES から取得および更新できるようにします。おそらく、River プラグインとまったく同じことを行うスタンドアロン プログラムを作成しているでしょうか?!

現時点でのすべての考えと憶測ですが、私が言ったように、私は現在これに取り組んでいます. 覚えていれば、おそらくここに戻って、そこまで到達することが許可されていれば、最終的な実装を投稿します。

于 2013-08-15T13:09:56.027 に答える