2017-01-06 7 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には、データベースの値と一致する 'format'パラメータを持つテンプレートを使用して日付を設定します。
+0

回答をいただきありがとうございます。ログを解析するための日付フィルタがありましたが、jdbcでそれを行う方法がわかりませんでした。 –

+0

あなたのクエリが実行されると、logstashに "date_visa"のようなフィールドがあるはずです。これをdate {}フィルタへの入力として使用します(おそらく、date_visaを日付フィールドに変換するようにフィールドを置き換えます)。 –

関連する問題