どこのフィールドにjsonが含まれているcsvを解析したいのですが、ログスタッシュエラーが発生します。だから私はcsvのjsonフィールドをどのようにして弾道探査に解析できるのか知る必要があります。LogstashでJSONを含むcsvを解析するにはどうすればいいですか?
10:54:20.220 [[メイン]> worker1] WARN logstash.filters.csv - エラー 解析CSV {:フィールド=> "メッセージ":ソース=> "431 | 2017年1月26日 10:08:57 | [email protected] | firstName | lastName | GBP | GB | 2015-06-14 07:16:39 | 43.88 | 2017-01-24 13:45:28 | f | { \ "18272 \":\ "19208 \":\ "1 \"、\ "19210 \":\ "1 \"}、\ "18218 \ }、 "18783 \" \:{\ "19249 \": "2 \"}} \ | 5 | GBP」、 :例外=>#}
CSVの例行はこのようになりますあなたが分かるように、区切り文字は区切られています。
431 | 2017年1月26日 10:08:57 | [email protected] |のfirstName | lastNameの| GBP | GB | 2015年6月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です。
あなたには、いくつかを反映するために、最後が、1つの値が '20' – Val
私がきた更新用cart'と' 'currency'間のフィールドが欠落しているようです私はちょうど作った変更を、私はcsvからカートを落として設定を変更してテストしました。そして、それはちょうど私がcsvにカートを追加するときのように見える問題はありません。 –
'' json'フィルタに 'target =>" cart "'を追加するとどうなりますか? – Val