decode_json_fields -> max_depth option not working or documentation misunderstanding.
To prevent creating tons of document fields in an Elasticsearch log index I want to control nested JSON parsing depth.
Filebeat version 7.8.0 (also tested on 6.8.10 and result is the same)
/tmp/filebeat.conf:
filebeat.inputs:
- type: log
  paths:
    - /tmp/filebeat.input
processors:
  - decode_json_fields:
      fields: ["message"]
      max_depth: 1
      target: "parsed"
output.console:
  pretty: true
/tmp/filebeat.input:
{"top": "top_value", "top_obj": {"level_1": "level_1_value", "level_1_obj": {"level_2": "level_2_value", "level_2_obj": {"level_3": "level_3_value"}}}}
Command:
filebeat  -e -c /tmp/filebeat.conf
Result:
"parsed": {
  "top_obj": {
    "level_1_obj": {
      "level_2": "level_2_value",
      "level_2_obj": {
        "level_3": "level_3_value"
      }
    },
    "level_1": "level_1_value"
  },
  "top": "top_value"
}
Expected result:
"parsed": {
  "top_obj": {
    "level_1_obj": "{\"level_2\": \"level_2_value\", \"level_2_obj\": {\"level_3\": \"level_3_value\"}}",
    "level_1": "level_1_value"
  },
  "top": "top_value"
}