2017-07-16 1 views
1

Ich versuche, Dokumente aus einer Postgres-Ansicht und in Logstash über Elasticsearch zu indizieren. Die Aussage, ein Teil meiner Konfigurationsdatei sieht wie folgt aus:Logstash JSON-Filter scheint nicht mit JDBC-Eingabe zu arbeiten

select search_document FROM my_view;

Die nächste Zeile in meiner config-Datei ist, wo ich versuche, den Wert aus der Datenbank-Aufruf zu extrahieren:

filter { 
json { 
    source => "[search_document][value]" 
    } 
} 

Dies sollte wählen der Wert der Spalte und dann direkt in Elasticsearch (oder in dieser Testphase, stdout); es funktioniert jedoch nicht ordnungsgemäß. Ich habe oben verschiedene Varianten des Zugriffs auf Eigenschaften ausprobiert und fügt immer Dokumente mit "search_document" als Schlüssel und dem Rest des JSON-Dokuments als Wert ein.

Gibt es etwas, was ich falsch mache?

Bearbeiten: Ich habe meine Ansicht aktualisiert, um eine select search_document::text FROM my_view; basierend auf einer anderen Antwort, die ich gefunden habe durchzuführen. Der ursprüngliche Typ der Spalte ist JSONB und die Daten in der Zeile sieht wie folgt aus:

{ "value" : { "key_1": "hello", "key_2": "world" } } 
+0

hinzufügen Können Sie das Format der Zeilen einfügen, die Sie auswählen? –

+0

Sicher, siehe oben. – sean

Antwort

1

Sie können versuchen, nur das das Feld spezifizieren Sie wie folgt erhalten möchten:

filter { 
json { 
    source => "value" 
    } 
} 

Der Filter soll mit jedem Datensatz ausgeführt werden, also sollten Sie nicht die search_document

+0

Ist es möglich, dass ich 'json_encode' verwenden muss, um das zuerst von Text zu JSON zu formatieren? – sean

Verwandte Themen