2017-07-16 64 views
1

我試圖從一個Postgres的觀點並經由Elasticsearch logstash索引文件中工作。我的配置文件的聲明部分看起來是這樣的:Logstash JSON過濾器不會出現與JDBC輸入

select search_document FROM my_view;

在我的配置文件中的下一行是我試圖從數據庫中提取調用的值:

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

這應該選擇該列的值,然後直接將其導入Elasticsearch(或在此測試階段,stdout);但是,它不能正常工作。我已經在上面的屬性訪問中嘗試了一些變體,並且它總是插入帶有「search_document」作爲關鍵字的文檔以及JSON文檔的其餘部分,因爲它的價值。

有什麼我做錯了嗎?

編輯:我已經更新了我的觀點來執行基於另一個答案,我已經找到了一個select search_document::text FROM my_view;。原列的類型是JSONB和行中的數據看起來與此類似:

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

? –

+0

當然,請參閱上文。 – sean

回答

1

您可以嘗試僅指定你想獲得這樣的領域:

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

過濾器假定每記錄您可以粘貼您選擇行的格式來執行,所以你不應該添加search_document

+0

是否有可能需要使用'json_encode'將其從文本格式化爲JSON? – sean