Je synchronise les données dans la base de données Oracle et l'instance ElasticSearch.
La table de base de données "SYNC_TABLE"
contient les colonnes suivantes: "ID"
qui est un NUMBER, "LAST_MODIFICATION"
- TIMESTAMP, "TEXT"
- VARCHAR2. J'utilise Logstash avec jdbc-input-plugin pour effectuer une synchronisation de données sur une base régulière.Logstash Configuration jdbc-input-plugin pour la valeur initiale sql_last_value
Ceci est le fichier de configuration Logstash:
input {
jdbc {
jdbc_driver_library => "ojdbc6.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:XE"
jdbc_user => "******"
jdbc_password => "******"
schedule => "* * * * *"
statement => "SELECT * from SYNC_TABLE where LAST_MODIFICATION >= :sql_last_value"
tracking_column => "LAST_MODIFICATION"
tracking_column_type => "timestamp"
use_column_value => true
}
}
output {
elasticsearch {
index => "SYNC_TABLE"
document_type => "SYNCED_DATA"
document_id => "%{ID}"
hosts => "localhost:9200"
}
stdout { codec => rubydebug }
}
Je voudrais importer toutes les données sur la première manche, puis syncronise que diff entre la dernière course et l'heure actuelle. donc je pense Logstash faire les requêtes suivantes:
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= '1 January 1970 00:00'
puis régulièrement
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= 'time of last run'
Documentation dit que la valeur initiale devrait être de 1 Janvier 1970, mais je vois dans mes journaux qu'au lieu qu'il faut Horodatage actuel Ceci est la première requête:
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= TIMESTAMP '2017-08-14 09:17:00.481000 +00:00'
est-il une erreur dans le fichier de configuration de logstash qui fait la logstash utiliser l'horodatage en cours au lieu de défaut («1 Janvier 1970 00:00)?