Loading

ES|QL DISSECT command

DISSECT enables you to extract structured data out of a string.

DISSECT input "pattern" [APPEND_SEPARATOR="<separator>"]
		
input
The column that contains the string you want to structure. If the column has multiple values, DISSECT will process each value.
pattern
A dissect pattern. If a field name conflicts with an existing column, the existing column is dropped. If a field name is used more than once, only the rightmost duplicate creates a column.
<separator>
A string used as the separator between appended values, when using the append modifier.

DISSECT enables you to extract structured data out of a string. DISSECT matches the string against a delimiter-based pattern, and extracts the specified keys as columns.

Refer to Process data with DISSECT for the syntax of dissect patterns.

The following examples show how to parse and convert structured strings with DISSECT.

Parse a string that contains a timestamp, some text, and an IP address:

ROW a = "2023-01-23T12:15:00.000Z - some text - 127.0.0.1"
| DISSECT a """%{date} - %{msg} - %{ip}"""
| KEEP date, msg, ip
		
date:keyword msg:keyword ip:keyword
2023-01-23T12:15:00.000Z some text 127.0.0.1

By default, DISSECT outputs keyword string columns. To convert to another type, use Type conversion functions:

ROW a = "2023-01-23T12:15:00.000Z - some text - 127.0.0.1"
| DISSECT a """%{date} - %{msg} - %{ip}"""
| KEEP date, msg, ip
| EVAL date = TO_DATETIME(date)
		
msg:keyword ip:keyword date:date
some text 127.0.0.1 2023-01-23T12:15:00.000Z