Type to search.

Dissect processor

Serverless

Elastic Cloud Serverless projects are autoscaled environments, fully managed by Elastic and available on Elastic Cloud.

Availability

  • Generally available

    This functionality is generally available and ready for production usage.

Serverless interfaces and procedures might differ from classic Elastic Stack deployments.

Stack GA 9.2+ …

The Elastic Stack includes Elastic's core products such as Elasticsearch, Kibana, Logstash, and Beats.

Availability

  • Generally available since 9.2

    This functionality is generally available and ready for production usage.

  • Preview in 9.1

    This functionality is in technical preview and is ready for evaluation. Use with caution in production; it is not recommended for mission-critical workloads. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. Specific Support terms apply.

Unless stated otherwise on the page, this functionality is available when your Elastic Stack is deployed on Elastic Cloud Hosted, Elastic Cloud Enterprise, Elastic Cloud on Kubernetes, and self-managed environments.

This documentation corresponds to the latest patch available for each minor version. If you're not using the latest patch, check the release notes for changes.

The Dissect processor parses structured log messages and extracts fields from them. It uses a set of delimiters to split the log message into fields instead of predefined patterns to match the log messages.

Dissect is much faster than Grok, and is recommended for log messages that follow a consistent, structured format.

To parse a log message with a dissect processor:

  1. Select Create → Create processor.
  2. Select Dissect from the Processor menu.
  3. Set the Source Field to the field you want to dissect.
  4. Set the delimiters you want to use in the Pattern field. Refer to the example pattern for more information on setting delimiters.

This functionality uses the Elasticsearch Dissect processor internally, but you configure it in Streamlang. Streamlang doesn’t always have 1:1 parity with the ingest processor options and behavior. Refer to Processor limitations and inconsistencies.

The following example shows the dissect pattern for an unstructured log message.

Log message:

Text
2025-04-04T09:04:45+00:00 ERROR 160.200.87.105 127.79.135.127 21582

Dissect Pattern:

Text
%{timestamp} %{log.level} %{source.ip} %{destination.ip} %{destination.port}
Note

This feature requires a Generative AI connector.

Instead of writing the dissect patterns by hand, you can select Generate patterns to have AI generate them for you.

Generated patterns work best on semi-structured data. For very custom logs with a lot of text, creating patterns manually generally creates more accurate results.

To add a generated dissect pattern:

  1. Select Create processor.
  2. Select Dissect from the Processor menu.
  3. Select Generate pattern.
  4. Select Accept to add a generated pattern to the list of patterns used by the processor.

Streams groups the samples from the Data preview table into categories of similar messages. For each category, Streams generates suggestions by sending samples to the LLM. Suggestions are then shown in the UI.

Warning

This can incur additional costs, depending on the LLM connector you are using. Typically a single iteration uses between 1000 and 5000 tokens depending on the number of identified categories and the length of the messages.

In YAML mode, configure the dissect processor using the following parameters. For the complete Streamlang syntax, refer to the Streamlang reference.

Parameter Type Required Description
from string Yes Source field to parse.
pattern string Yes Dissect pattern with %{field} placeholders.
append_separator string No Separator used when concatenating target fields.
ignore_missing boolean No When true, skip this processor if the source field is missing.
YAML
- action: dissect
  from: body.message
  pattern: "%{attributes.timestamp} %{attributes.level} %{attributes.message}"