JSON processor
Converts a JSON string into a structured JSON object.
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.