Ich verwende Logstash 1.4.1 zusammen mit ES1.01 und möchte bereits indizierte Dokumente auf Basis einer berechneten Checksumme ersetzen. Ich verwende derzeit den "Fingerabdruck" -Filter in Logstash, der basierend auf einem bestimmten Algorithmus ein "Fingerabdruck" -Feld erstellt. Nun - was ich erreichen möchte, ist, dass ES ein bereits bestehendes Dokument ersetzt, das auf einem identischen Fingerabdruckwert basiert .
Sagen Sie zum Beispiel, dass ich ein Dokument mit einem Fingerabdruckfeldwert von "2c9a6802e10fbcff36177e0b88993f90868fa6fa" habe. Jetzt - wenn ein Dokument mit einem identischen Fingerabdruckwert indiziert werden soll, soll es das alte Dokument ersetzen, das bereits im Index vorhanden ist.
Ich habe versucht, Folgendes zur Template-Datei "elasticsearch-template.json" hinzuzufügen, von der ich anmaße, dass sie vom Logstash ES-Ausgabe-Plugin verwendet wird:
%Vor%aber es funktioniert nicht. Was mache ich hier falsch?
Prost
Ich würde den Parameter document_id in Ihrem logstash elasticsearch-Ausgabeabschnitt verwenden:
Dokument-ID
%Vor%Die Dokument-ID für den Index. Nützlich zum Überschreiben vorhandener Einträge in Elasticsearch mit der gleichen ID.
Ich glaube, der Eintrag sollte in etwa so aussehen:
%Vor%Es verwendet das sprintf-Format von logstash, um eine Zeichenfolge durch den Inhalt eines Felds zu ersetzen:
Unter der Annahme, dass der Fingerabdruck als _id festgelegt wird, treffen Sie möglicherweise auf ein Problem mit der täglichen Indexverwaltung von logstash und verwenden nicht den Zeitstempel Ihrer Daten.
Stellen Sie sicher, dass Sie Ihren Zeitstempel aus den Eingabedaten festgelegt haben, damit das Dokument den richtigen täglichen Index erhält:
Wenn meine Vermutung richtig ist, sollten Sie sehen, dass Ihre doppelten Dokumente unterschiedliche Zeitstempel haben und sich in verschiedenen täglichen Indizes befinden.
Tags und Links elasticsearch logstash