I\'m using the JDBC plugin for ElasticSearch to update my MySQL database. It picks up new and changed records, but does not delete records that have been removed from MySQL.
i am still relatively new to elastic and had been using jdbc river for my project. If i understood correctly, which not necessarily could be the case, this is how it works:
so considering that you would want to have a housekeeping running you need to have versioning to be set to true
and subsequently this implies that digesting
should be set to true
as well.
So having said that your river should look like this:
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",
"autocommit" : true,
"index": {
"index" : "headphones",
"type" : "Account",
"versioning" : true,
"digesting" : true
}
}
}'
note that versioning
and digesting
should be part of index
definition and not jdbc
definition