Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ElasticSearch river JDBC MySQL não excluindo registros


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