Sinds deze vraag is gesteld, zijn de parameters sterk veranderd, zijn versiebeheer en digestie verouderd en is de poll vervangen door schema, dat een cron-expressie zal nemen over hoe vaak de rivier opnieuw moet worden uitgevoerd (hieronder is gepland om elke 5 minuten te worden uitgevoerd )
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",
"schedule": "0 0/5 * * * ?" ,
"autocommit" : true,
"index" : "headphones",
"type" : "Account"
}
}'
Maar voor de hoofdvraag is het antwoord dat ik van de ontwikkelaar kreeg dithttps://github.com/jprante/elasticsearch-river-jdbc/issues/213
Ik probeerde het huishouden met versiebeheer, maar dit werkte niet goed samen met incrementele updates en het toevoegen van rijen.
Een goede methode zou indexering met vensters zijn. Elk tijdsbestek (misschien één keer per dag of per week) wordt een nieuwe index gemaakt voor de rivier, en toegevoegd aan een alias. Oude indices worden na een tijdje geschrapt. Dit onderhoud lijkt op het indexeren van logstash, maar valt buiten het bereik van een rivier.
De methode die ik momenteel gebruik als een I-onderzoeksalias, is dat ik de index en de rivier elke nacht opnieuw maak en de rivier om de paar uur laat lopen. Het zorgt ervoor dat nieuwe gegevens die worden ingevoerd die dag worden geïndexeerd, en verwijderingen worden elke 24 uur weergegeven