ElasticSearch 用の JDBC プラグインを使用して MySQL データベースを更新しています。新しいレコードと変更されたレコードを取得しますが、MySQL から削除されたレコードは削除しません。それらはインデックスに残ります。
これは、川を作成するために使用するコードです。
curl -XPUT 'localhost:9200/_river/account_river/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "test_user",
"password" : "test_pass",
"sql" : "SELECT `account`.`id` as `_id`, `account`.`id`, `account`.`reference`, `account`.`company_name`, `account`.`also_known_as` from `account` WHERE NOT `account`.`deleted`",
"strategy" : "simple",
"poll" : "5s",
"versioning" : true,
"digesting" : false,
"autocommit" : true,
"index" : "headphones",
"type" : "Account"
}
}'
OSX Mountain Lion に自作経由で ElasticSearch をインストールしました。エラーや問題はなく、すべてが期待どおりに応答します。権限は問題ありません。ログにエラーはありません。
autocommit
考えられる、 、versioning
およびのすべての組み合わせを削除し、含めました (そして true と false に設定しました) digesting
。これは開発データベースなので、レコードが完全に削除され、キャッシュされず、ソフト削除されていないと確信しています。すべてのレコードを削除すると (つまり、リバーをそのままにして、ES でインデックス化されたものを削除するだけです)、次にリバーが更新されたときにレコードが再追加されないため、バージョン管理と削除に関して何かを見逃していると思います。 .
また、列を指定するさまざまな方法を試しました_id
。呼び出し時に JSON を介して値があることを確認しました。
乾杯。