У меня есть стек лося, где я хотел бы проанализировать 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.
Кажется, вы теряете поле между '' cart' и currency' для последнего, но одно значение '20' – Val
Я обновление, чтобы отразить некоторые изменения, которые я только что сделал, я протестировал его, сбросив корзину из csv и изменив конфигурацию, и он не импортирует никаких проблем, как кажется, когда я добавляю корзину в csv. –
Что произойдет, если вы также добавите 'target =>" корзину "в свой фильтр' json'? – Val