JSON processor

edit

Converts a JSON string into a structured JSON object.

Table 29. Json Options

Name Required Default Description

field

yes

-

The field to be parsed.

target_field

no

field

The field that the converted structured object will be written into. Any existing content in this field will be overwritten.

add_to_root

no

false

Flag that forces the parsed JSON to be added at the top level of the document. target_field must not be set when this option is chosen.

add_to_root_conflict_strategy

no

replace

When set to replace, root fields that conflict with fields from the parsed JSON will be overridden. When set to merge, conflicting fields will be merged. Only applicable if add_to_root is set to true.

allow_duplicate_keys

no

false

When set to true, the JSON parser will not fail if the JSON contains duplicate keys. Instead, the last encountered value for any duplicate key wins.

strict_json_parsing

no

true

When set to true, the JSON parser will strictly parse the field value. When set to false, the JSON parser will be more lenient but also more likely to drop parts of the field value. For example if strict_json_parsing is set to true and the field value is 123 "foo" then the processor will throw an IllegalArgumentException. But if strict_json_parsing is set to false then the field value will be parsed as 123.

description

no

-

Description of the processor. Useful for describing the purpose of the processor or its configuration.

if

no

-

Conditionally execute the processor. See Conditionally run a processor.

ignore_failure

no

false

Ignore failures for the processor. See Handling pipeline failures.

on_failure

no

-

Handle failures for the processor. See Handling pipeline failures.

tag

no

-

Identifier for the processor. Useful for debugging and metrics.

All JSON-supported types will be parsed (null, boolean, number, array, object, string).

Suppose you provide this configuration of the json processor:

{
  "json" : {
    "field" : "string_source",
    "target_field" : "json_target"
  }
}

If the following document is processed:

{
  "string_source": "{\"foo\": 2000}"
}

after the json processor operates on it, it will look like:

{
  "string_source": "{\"foo\": 2000}",
  "json_target": {
    "foo": 2000
  }
}

If the following configuration is provided, omitting the optional target_field setting:

{
  "json" : {
    "field" : "source_and_target"
  }
}

then after the json processor operates on this document:

{
  "source_and_target": "{\"foo\": 2000}"
}

it will look like:

{
  "source_and_target": {
    "foo": 2000
  }
}

This illustrates that, unless it is explicitly named in the processor configuration, the target_field is the same field provided in the required field configuration.