Ich verwende this Plugin als Ausgabe für meine Logstash Logs.jdbc Ausgabe Plugin Logstash mit UPSERT Funktion
Ich muss die Upsert-Funktion verwenden, um zu überprüfen, ob eine Zeile existiert, dann aktualisieren, wenn es nicht existiert, dann einfach hinzufügen.
Ich benutze PostgreSQL als db und es unterstützt die Verwendung von UPSERT, sehr gut beschrieben here. Als Input kommen die Logs von elasticsearch.
Das Problem mit meiner Konfiguration ist, dass ich korrekt neue Zeilen in meiner Tabelle hinzufügt, aber ein vorhandenes nicht aktualisieren kann.
Hier ist meine Konfiguration:
jdbc {
driver_jar_path => '/home/vittorio/Downloads/postgresql-42.1.1.jre6.jar'
connection_test => false
connection_string => 'jdbc:postgresql://127.0.0.1:5432/postgres'
statement => ["
INSERT INTO userstate VALUES(?,?,?,?,?) on conflict (username)
do update set (business_name, iban, status, timestamp) = ('%{[resource][response_attributes][business_name]}','%{[resource][response_attributes][iban]}','%{[resource][response_attributes][status]}','%{@timestamp}')
where userstate.username = '%{[request][username]}';", "%{[request][username]}","%{[resource][response_attributes][business_name]}","%{[resource][response_attributes][iban]}","%{[resource][response_attributes][status]}","%{@timestamp}"
]
username => "myuser"
password => "mypass"
}
Bin ich etwas falsch zu machen? dank