2017-01-31 6 views
0

У меня есть стек лося, где я хотел бы проанализировать csv, где одно поле содержит json, но я запускаю ошибку logstash. Поэтому мне нужно знать, как я могу проанализировать поле json в csv в elasticssearch.Как я могу разобрать csv, содержащий JSON с logstash

10: 54: 20,220 [[Основной]> worker1] WARN logstash.filters.csv - Ошибка синтаксического анализа CSV {: поле => "сообщение",: Источник => "431 | 2017-01-26 10: 08: 57 | [email protected] | firstName | lastName | GBP | RU | 2015-06-14 07: 16: 39 | 43.88 | 2017-01-24 13: 45: 28 | f | { \ "18272 \": {\ "19208 \": \ "1 \", \ "19210 \": \ "1 \"}, \ "18218 \": {\ "19099 \": \ "1 \" }, \ "18783 \": {\ "19249 \": \ "2 \"}} | 5 | GBP», : исключение => #}

пример строки в CSV-файл выглядит следующим образом , как вы можете видеть, это разделитель разделен.

431 | 2017-01-26 10: 08: 57 | [email protected] | Firstname | ЬавЬЫате | GBP | GB | 2015-06-14 07: 16: 39 | 43,88 | 2017- 01-24 13: 45: 28 | f | {\ "18272 \": {\ "19208 \": \ "1 \", \ "19210 \": \ "1 \"}, \ "18218 \" : {\ "19099 \": \ "1 \"}, \ "18783 \": {\ "19249 \": \ "2 \"}} | 5 | GBP

Мой конфиг выглядит следующим образом ,

input { 
    file { 
    path => "/etc/logstash/files/*.csv" 
    start_position => "beginning" 
    } 
} 
filter { 
    csv { 
     separator => "|" 
     columns => ['userId', 'profileUpdated', 'email', 'lastName', 'firstName', 'userCurrency', 'billingCountry', 'registeredDate', 'cartValue', 'cartUpdated', 'kitInCart', 'cart' 'itemsInCart' ,'cartCurrency'] 
    } 
    json { 
    source => 'cart' 
    } 
    date { 
    match => [ "registeredDate", "YYYY-MM-dd HH:mm:ss" ] 
    } 
} 
output { 
    stdout { 
    codec => rubydebug 
    } 
    elasticsearch { 
    hosts => "elasticsearch:9200" 
    index => "users" 
    } 
} 

Как вы можете видеть выше, поле моей корзины - это json one.

+0

Кажется, вы теряете поле между '' cart' и currency' для последнего, но одно значение '20' – Val

+0

Я обновление, чтобы отразить некоторые изменения, которые я только что сделал, я протестировал его, сбросив корзину из csv и изменив конфигурацию, и он не импортирует никаких проблем, как кажется, когда я добавляю корзину в csv. –

+0

Что произойдет, если вы также добавите 'target =>" корзину "в свой фильтр' json'? – Val

ответ

2

Я добавил это в свой файл csv filterconfig, и он сработал.

quote_char => «'»

+0

Рад, что вы это поняли – Val