Mysql
 sql >> Database >  >> RDS >> Mysql

ElasticSearch river JDBC MySQL non elimina i record

Da quando è stata posta questa domanda, i parametri sono cambiati notevolmente, il controllo delle versioni e la digestione sono stati deprecati e il sondaggio è stato sostituito da pianificazione, che richiederà un'espressione cron sulla frequenza con cui eseguire nuovamente il fiume (di seguito è programmata l'esecuzione ogni 5 minuti )

    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"
        }
    }'

Ma per la domanda principale, la risposta che ho ricevuto dallo sviluppatore è questahttps://github.com/jprante/elasticsearch-river-jdbc/issues/213

Ho provato a fare le pulizie con il controllo delle versioni, ma questo non ha funzionato bene insieme agli aggiornamenti incrementali e all'aggiunta di righe.

Un buon metodo sarebbe l'indicizzazione con finestra. Ogni lasso di tempo (forse una volta al giorno o alla settimana) viene creato un nuovo indice per il fiume e aggiunto a un alias. I vecchi indici devono essere abbandonati dopo un po'. Questa manutenzione è simile all'indicizzazione logstash, ma non rientra nell'ambito di un fiume.

Il metodo che sto attualmente utilizzando come aliasing di ricerca è ricreare l'indice e il fiume ogni notte e programmare che il fiume scorra ogni poche ore. Garantisce che i nuovi dati inseriti vengano indicizzati quel giorno e le eliminazioni si rifletteranno ogni 24 ore