Od czasu, gdy zadano to pytanie, parametry znacznie się zmieniły, wersjonowanie i przetwarzanie zostały przestarzałe, a sonda została zastąpiona harmonogramem, który przyjmie wyrażenie crona określające, jak często należy ponownie uruchamiać rzekę (poniżej zaplanowane jest uruchamianie co 5 minut )
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"
}
}'
Ale na główne pytanie, odpowiedź, którą otrzymałem od programisty, jest następującahttps://github.com/jprante/elasticsearch-river-jdbc/issues/213
Próbowałem sprzątania z wersjonowaniem, ale to nie działało dobrze razem z aktualizacjami przyrostowymi i dodawaniem wierszy.
Dobrą metodą byłoby indeksowanie okienkowe. W każdym przedziale czasowym (może raz dziennie lub na tydzień) tworzony jest nowy indeks dla rzeki i dodawany do aliasu. Stare indeksy mają po pewnym czasie spaść. Ta konserwacja jest podobna do indeksowania logstash, ale jest poza zasięgiem rzeki.
Metoda, której obecnie używam jako aliasingu, polega na tym, że co noc odtwarzam indeks i rzekę i planuję przepływ rzeki co kilka godzin. Zapewnia to, że nowe wprowadzane dane zostaną zindeksowane tego dnia, a usunięcia będą odzwierciedlane co 24 godziny