2016-07-28 15 views
0

Hier ist meine Frage. Ich habe folgende Spalten mit Int-Typ.Dynamische Spalte erstellen und Ausgabe in ES speichern

1) DurationA

2) DurationB

3) Dauer C = DurationB-DurationA

DurationA und DurationB Werte aus verschiedenen CSV-Datei kommt, die ich durch Logstash

ES bin Laden

Frage

1) Gibt es trotzdem ich kann Spalte DurationC erstellen und Wert in ES speichern, während ich CS verarbeite V-Datei?

2), wenn nicht möglich, welche Funktion ich in ES-Abfrage verwenden sollte das gewünschte Ergebnis (DurationB-DurationA)

Dank

Antwort

0

Sie ruby Filter verwenden können, zu erhalten, wie:

filter { 
    ruby { 
    code => "event['Duration C'] = event['Duration B'].to_f - event['Duration A'].to_f" 
    } 
} 
0

Der ruby Filter ist eine Option, aber es gibt ein Nicht-Kern-Plugin, das für mathematische Berechnungen erstellt wurde: https://github.com/robin13/logstash-filter-math

Und ein bisschen Anleitung finden Sie hier: http://www.rubydoc.info/gems/logstash-filter-math/LogStash/Filters/Math

+0

Danke Alpert und Anderi für Ihre Antwort. Da DurationA und DurationB aus einer anderen CSV-Datei stammen, bezweifle ich wirklich, dass ich beim Laden von Daten in ES mithilfe von Logstash eine Formel anwenden kann. DurationA- und DurationB-Werte sind in demselben Dokument vorhanden, daher muss ich mein ES-Dokument möglicherweise aktualisieren, sobald das Laden der Daten abgeschlossen ist. Ich schaue nur, wie kann ich es mit Aggregatfunktion aktualisieren? Lassen Sie mich wissen, wenn Sie einen Vorschlag dafür haben .. – Rakesh