2017-01-06 43 views
1

我正在使用logstash jdbc插件導入表,我不明白爲什麼一列被動態地解析爲tex。Elasticsearch logstash jdbc:datetime列被解析爲文本類型

這是我的SQL列:

[DATE_VISA] [datetime] 

我logstash的conf文件:

input { 
    jdbc { 
     jdbc_connection_string => "jdbc:sqlserver://192.168.100.205;databaseName=myDB;" 
      jdbc_user => "user" 
      jdbc_password => "pass" 
     jdbc_driver_library => "C:\Program Files (x86)\sqljdbc_6.0\enu\sqljdbc42.jar" 
     jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
     statement => "SELECT [DATE_VISA] FROM [dbo].[TABLE] WHERE [DATE_VISA] IS NOT NULL" 
    } 
} 

output { 
    elasticsearch { 
     hosts => "localhost:9200" 
     index => "myindex" 
     document_type => "mytype" 

    } 
} 

,當我在ES請求映射我看到:

"date_visa": { 
    "type": "text", 
    "fields": { 
     "keyword": { 
     "type": "keyword", 
     "ignore_above": 256 
     } 
    } 
    } 

,如果我嘗試在導入過程中引發錯誤之前先製作一張地圖。

你知道這個錯誤發生了什麼,以及如何製作過濾器或轉換嗎?

回答

1

兩個選項:

  • 有logstash使它成爲一個日期,使用日期{}過濾。
  • 有elasticsearch使它成爲一個日期,使用一個模板與'格式'參數匹配的數據庫中的值。
+0

謝謝你的回答,我看到日期過濾器解析日誌,但我沒有看到如何做到這一點與jdbc,你能給我一個例子的鏈接嗎?這對我非常有用 –

+0

當你的查詢運行時,你應該在logstash中得到一個名爲「date_visa」的字段。使用它作爲date {}過濾器的輸入(並且可能會將其替換爲字段,以便將date_visa轉換爲日期字段)。 –