index jdbc elasticsearch logstash

jdbc - index - logstash output logstash



logstash jdbc conector de datos basados ​​en el tiempo (1)

Con el nuevo conector logstash jdbc aquí:

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html ¿Cómo se ejecuta Logstash subsiguiente que ya está indexado en ElasticSearch? ¿Crea documentos nuevos en el índice ES o actualiza los documentos que coinciden con la fila que ya han sido indexados? El caso de uso que intento abordar es indexar filas con marcas de tiempo en búsqueda elástica, pero la tabla se actualiza continuamente. Me gustaría solo indexar datos nuevos, o si tengo que volver a leer la tabla, solo agrego nuevos documentos para nuevos. filas

¿Alguna sugerencia? ¿O más documentación sobre el complemento logstash jdbc?


Lo que haría es incluir en la declaración de consulta la marca de tiempo de la última vez que se ejecutó el complemento (es decir, sql_last_start ) y, por lo tanto, solo cargará los registros recién actualizados.

Por ejemplo, tu plugin de entrada jdbc se vería así:

input { jdbc { jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb" jdbc_user => "mysql" schedule => "* * * * *" statement => "SELECT * FROM mytable WHERE timestamp > :sql_last_start" } }

Asegúrese de cambiar la timestamp con el nombre de su campo que contiene la última fecha actualizada y mytable con el nombre real de su tabla.