Skip to main content

Split

Mutate Elastic Compatible

Synopsis

Splits a string field into an array using a specified separator pattern.

Schema

split:
- field: <ident>
- separator: <char>
- description: <text>
- if: <script>
- ignore_failure: <boolean>
- ignore_missing: <boolean>
- on_failure: <processor[]>
- on_success: <processor[]>
- preserve_trailing: <boolean>
- tag: <string>
- target_field: <ident>

Configuration

FieldRequiredDefaultDescription
fieldY-Field containing the string to split
separatorY-Character or regular expression pattern to use as separator
descriptionN-Explanatory note
ifN-Condition to run
ignore_failureNfalseSee Handling Failures
ignore_missingNfalseIf true, quietly exit if field doesn't exist
on_failureN-See Handling Failures
on_successN-See Handling Success
preserve_trailingNfalseIf true, preserve empty trailing values
tagN-Identifier
target_fieldNfieldField to store the resulting array

Details

When splitting strings, the processor supports both basic string separators and advanced regular expression patterns. The result is stored as an array either in the original field or in a specified target field.

note

Regular expressions are cached for better performance when reused.

warning

The field must contain a string value, otherwise the processor will fail unless ignore_failure is set to true.

Examples

Basic

Split string using comma separator...

{
"data": "one,two,three"
}
split:
- field: data
- separator: ","

to create an array of values:

{
"data": ["one", "two", "three"]
}

Trailing Values

Enabling preserve_trailing...

{
"data": "one,two,three,"
}
split:
- field: data
- separator: ","
- preserve_trailing: true

keeps empty trailing elements:

{
"data": ["one", "two", "three", ""]
}

Regular Expressions

Splitting on multiple whitespace characters...

{
"message": "hello world test"
}
split:
- field: message
- separator: '\s+'

treats consecutive spaces as one separator:

{
"message": ["hello", "world", "test"]
}

Target Field

Storing the result in a new field...

{
"tags": "important,urgent,review"
}
split:
- field: tags
- separator: ","
- target_field: tag_array

preserves the original:

{
"tags": "important,urgent,review",
"tag_array": ["important", "urgent", "review"]
}