Desde que esta pergunta foi feita, os parâmetros mudaram muito, versionamento e digestão foram descontinuados, e poll foi substituído por agendamento, que terá uma expressão cron sobre a frequência de reexecutar o rio (abaixo está programado para ser executado a cada 5 minutos )
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"
}
}'
Mas para a pergunta principal, a resposta que recebi do desenvolvedor é estahttps://github.com/jprante/elasticsearch-river-jdbc/issues/213
Tentei manter o controle de versão, mas isso não funcionou bem junto com atualizações incrementais e adição de linhas.
Um bom método seria a indexação em janelas. A cada período de tempo (talvez uma vez por dia ou por semana) um novo índice é criado para o rio e adicionado a um alias. Índices antigos devem ser descartados depois de um tempo. Essa manutenção é semelhante à indexação do logstash, mas está fora do escopo de um rio.
O método que estou usando atualmente como aliasing de pesquisa é recriar o índice e o rio todas as noites e programar o rio para ser executado a cada poucas horas. Ele garante que os novos dados inseridos sejam indexados naquele dia e as exclusões serão refletidas a cada 24 horas