logstashへの入力として以下のJSONがあります。Jsonファイル内のネストされたフィールドのlogstash設定ファイルでMutate/Convertを使用する方法
{
"totalTurnoverUSD":11111.456,
"children":[
{
"totalTurnoverUSD":11100.456,
"children":[
{
"totalTurnoverUSD":11.00,
"children":[
]
}
]
}
]
}
また、以下の設定ファイルを使用してelasticSearchとstdoutに出力します。
input {
file {
type => $type
path => $filePathofJsonFile
codec => "json"
start_position => "beginning"
sincedb_path => "/dev/null"
ignore_older => 0
close_older => 2
max_open_files => 10
}
}
filter {
mutate {
convert => { "totalTurnoverUSD" => "string" }
}
}
output {
elasticsearch{
hosts => $elasticHost
index =>"123"
}
stdout {
codec => rubydebug
}
}
しかし、私はJSON入力ファイルのネストされた子文書にtotalTurnoverUSDフィールドを変換するわけではないため、エラーメッセージ
"error"=>{"type"=>"illegal_argument_exception", "reason"=>"mapper [children.totalTurnoverUSD] of different type, current_type [long], merged_type [double]"}}}, :level=>:warn}
の下になって。
JSON文書のネストされたフィールドにアクセスして、そのデータ型を文字列に変換するための方法がありますか。
入れ子にしたレベルはいくつありますか?それは常に3つですか?または3つの最大? – Val
いいえ、必ずしも3つあるとは限りません。それはどのレベルまでも可能です。 – codiacTushki