sql >> Base de Datos >  >> RDS >> Mysql

ElasticSearch river JDBC MySQL no elimina registros

Desde que se hizo esta pregunta, los parámetros han cambiado mucho, el control de versiones y la digestión han quedado obsoletos, y la encuesta se ha reemplazado por el programa, que tomará una expresión cron sobre la frecuencia con la que se vuelve a ejecutar el río (a continuación está programado para ejecutarse 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"
        }
    }'

Pero para la pregunta principal, la respuesta que obtuve del desarrollador es esta https://github.com/jprante/elasticsearch-river-jdbc/issues/213

Probé el mantenimiento con el control de versiones, pero esto no funcionó bien junto con las actualizaciones incrementales y la adición de filas.

Un buen método sería la indexación por ventanas. Cada período de tiempo (quizás una vez por día o por semana) se crea un nuevo índice para el río y se agrega a un alias. Los índices antiguos se eliminarán después de un tiempo. Este mantenimiento es similar a la indexación de logstash, pero está fuera del alcance de un río.

El método que estoy usando actualmente como alias de investigación es recrear el índice y el río todas las noches, y programar el río para que se ejecute cada pocas horas. Garantiza que los nuevos datos que se introduzcan se indexen ese día y que las eliminaciones se reflejen cada 24 horas