2017-01-08 3 views
1

В моей таблице MS SQL у меня есть столбец с датой, хранящейся в виде строки в формате «dd-mm-yyyy 00: 00: 00.000» например: 1999-10-06 00: 00: 00.000 или 2000-04- 27 00: 00: 00.000Logstash jdbc plugin: как использовать фильтр даты для столбца?

Во время моего импорта я хочу преобразовать значения этого столбца в тип даты.

Я видел функцию, называемую фильтром, которая могла бы выполнять этот тип преобразования. Я нашел примеры, но только для синтаксического анализа журналов полных текстовых строк, полученных 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" 

    } 
} 

На данный момент это конф не работает и создать этот ES текстового поля:

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

ответ

1

так answere должен был сделать этот фильтр в письменном виде имя столбца в строчной:

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" 
      } 
     } 
     } 
    } 
} 
0

Если у вас есть поле в базе данных под названием myDateField, вы должны получить поле с тем же именем, после используя вход JDBC {}. Затем вы можете попросить logstash обработать («фильтр») и вывести эти данные.

В логсташе включено более 50 фильтров (см. the doc).

Чтобы ввести свое поле в дату, используйте фильтр даты {}. Обратите внимание, что этот фильтр обычно используется для установки поля «@timestamp» журнала, но вы можете поместить дату в другое поле (или даже переписать одно и то же поле), если хотите.

+0

поблагодарить вас за ваш ответ, но я уже заметил, что фильтры - это то, что мне нужно использовать. я не могу заставить его работать в моем случае, и я хотел бы увидеть пример для моего случая, когда я хочу переопределить поле. Возможно, это очевидно, но мои попытки не увенчались успехом, и я не нашел полный пример. –

+0

Публикуя то, что вы пробовали, предоставленный вами ввод, полученный результат и результат, который вы хотели, помогли бы людям диагностировать проблему , –