2017-07-30 129 views
0

我的postgres數據庫(遠程)中有很多數據。這是過去1年的數據,現在我想把它推向elasticsearch。將舊數據從postgres導入elasticsearch

數據中有一個時間字段,其格式爲2016-09-07 19:26:36.817039+00

我希望這是elasticsearch的時間域(@timestamp)。這樣我可以用kibana查看它,並在去年查看一些可視化。

我需要幫助我如何有效地推送所有這些數據。我不明白,我如何從postgres獲取所有這些數據。

我知道我們可以通過jdbc插件注入數據,但我認爲我無法創建我的@timestamp字段。

我也知道zombodb,但不知道這是否也給我功能給我自己的時間。

此外,數據是散裝的,所以我在尋找一個有效的解決方案

我需要我怎麼能做到這一點的幫助。所以,建議是受歡迎的。

回答

1

我知道我們可以通過JDBC插件注入數據,但我想我不能創建 我@timestamp領域這一點。

這應該可以用Logstash來實現。第一個起點應該是this blog post。請記住,Logstash總是由3部分組成:

  1. 輸入:JDBC input。如果您只需要導入一次,請跳過schedule,否則請在cron語法中設置正確的時間。
  2. 過濾器:這不是博客文章的一部分。您需要使用Date filter來設置正確的值@timestamp - 最後添加示例。
  3. 輸出:這只是Elasticsearch output

這將取決於PostgreSQL的時間戳值的格式和字段名,但過濾部分應該是這個樣子:

date { 
    match => ["your_date_field", "dd-mm-YYYY HH:mm:ss"] 
    remove_field => "your_date_field" # Remove now redundant field, since we're storing it in @timestamp (the default target of date) 
} 

如果您擔心的表現: