1

私のMS SQLテーブルには、日付が「dd-mm-yyyy 00:00:00.000」の形式で文字列として保存された列があります。たとえば、1999-10-06 00:00:00.000または2000-04-27 00: 00:00.000

インポート中に、この列の値を日付型に変換したいと考えています。

このタイプの変換を行うことができるフィルターと呼ばれる機能を見ました。例を見つけましたが、Beats によってもたらされたログの全文行を一種の正規表現で解析するためだけです。

SQL列にこの機能を使用する方法は? たとえば、このconfファイルを実際に機能させるにはどうすればよいでしょうか?

 input {
    jdbc {
        jdbc_connection_string => "jdbc:localhost;"
          jdbc_user => "user"
          jdbc_password => "pass"
       jdbc_driver_library => "C:\Program Files (x86)\jdbc\sqljdbc_6.0\enu\sqljdbc42.jar"
        jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
        statement => "SELECT  * FROM SOLD"
    }
}

filter
{
     date {
         match => [ "DATE_COLUMN", "YYYY-MM-dd 00:00:00.000" ]
    }
}

output {
    elasticsearch { 
       hosts => "localhost:9200"
       index => "indexname"
       document_type => "typename"

    }
}

現時点では、この conf は機能せず、次の ES テキスト フィールドを作成します。

 "date_column": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
          }
     }
  }
4

2 に答える 2

1

その答えは、小文字で列の名前を書いてこのフィルターを作成することでした :

filter
{
     date {
         match => [ "date_column", "yyyy-MM-dd HH:mm:ss.SSS" ]
    }
}

そして、この日付形式のelasticsearchマッピング列を作成するには:

PUT /index
{
     "mappings": {
      "type": {
        "properties": {
         "date_column": {
            "type": "date",
            "format": "yyyy-MM-dd HH:mm:ss.SSS"
          }
        }
      }
    }
}
于 2017-01-10T10:33:59.730 に答える
0

データベースに myDateField というフィールドがある場合、JDBC 入力を使用した後に同じ名前のフィールドを取得する必要があります。{} 次に、logstash にこのデータの処理 (「フィルター」) と出力を依頼できます。

logstash には 50 を超えるフィルターが含まれています (ドキュメントを参照)。

フィールドを日付にするには、日付フィルタを使用します。{} このフィルターは通常、logstash の「@timestamp」フィールドを設定するために使用されますが、必要に応じて日付を別のフィールドに入れる (または同じフィールドを上書きする) こともできます。

于 2017-01-09T03:45:51.337 に答える