Keyに角括弧( ‘[’ )が使用されているJSONデータを取り込みたい

お世話になります。

初歩的な質問ですみません。
keyに角括弧( ‘[’ )が使用されているJSONデータをlogstashを使ってESに取り込みたいのですが、エスケープなどをしてもlogstashでJSONパースエラーとなり取り込みすることができません。
s3inputプラグインを使用しており、codecにjsonを指定しております。

このデータを取り込みできるようにするにはどうしたらよいのでしょうか。

取り込んだJSONデータ

{"WATER \[mL\]": 100}

エラーメッセージ

[ERROR][logstash.codecs.json     ] JSON parse error, original data now in message field {:error=>#<LogStash::Json::ParserError: Unrecognized character escape '[' (code 91)
 at [Source: (String)"{"WATER \[mL\]": 100}"; line: 1, column: 11]>, :data=>"{\"WATER \\[mL\\]\": 100}"}

logstashバージョン

7.3.2

角括弧の前にエスケープをしない場合は以下のエラーメッセージとなります。

[ERROR][logstash.codecs.json     ] JSON parse error, original data now in message field {:error=>#<LogStash::Json::ParserError: Invalid FieldReference: `WATER [mL]`>, :data=>"{\"WATER [mL]\": 100}"}

本問題については、本チケットでレポートされています。

現状の簡単な回避方法としては、inputのcodecでjsonに変換するのではなく、以下のように角括弧を別の文字に変換、もしくは、削除してからjsonにパースすることで回避できます。

filter {
  mutate {
    gsub => [
      "message","\[","<",
      "message","\]",">"
      ]
  }
  json {
      source => "message"
    }
}

まだオープンなチケットなのですね。承知いたしました。
現状の簡単な回避方法についてもご教示ありがとうございます。
色々と試してみたいと思います。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.