Siden dette spørgsmål er blevet stillet, har parametrene ændret sig meget, versionering og fordøjelse er blevet forældet, og afstemningen er blevet erstattet af tidsplan, som vil tage et cron udtryk for, hvor ofte floden skal køres igen (nedenfor er planlagt til at køre hvert 5. min. )
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"
}
}'
Men til hovedspørgsmålet er svaret, jeg fik fra udvikleren, dettehttps://github.com/jprante/elasticsearch-river-jdbc/issues/213
Jeg prøvede husholdning med versionering, men det fungerede ikke godt sammen med trinvise opdateringer og tilføjelse af rækker.
En god metode ville være vinduesindeksering. Hver tidsramme (måske én gang om dagen eller om ugen) oprettes et nyt indeks for floden og tilføjes til et alias. Gamle indekser skal droppes efter et stykke tid. Denne vedligeholdelse ligner logstash-indeksering, men den er uden for en flods rammer.
Den metode, jeg i øjeblikket bruger som et I-forskningsaliasing, er, at jeg genskaber indekset og floden hver aften og planlægger, at floden løber med få timers mellemrum. Det sikrer, at nye data, der bliver lagt ind, vil blive indekseret den dag, og sletninger afspejles hver 24. time