Sign inGet started

Free tool

Grok and dissect pattern generator

Paste a few raw log lines. Get a dissect pattern when the delimiters allow it, a grok pattern when they do not, ECS field names, a per-line preview, and the ingest pipeline, _simulate request and Logstash filter to match.

Runs entirely in your browser. Nothing you enter is sent anywhere.

1. Log lines

Or paste your ownA few raw lines, one event per line, exactly as they reach Elasticsearch or Logstash. Three to ten lines that differ from each other give the best proposal. Nothing leaves this page.

Settings

2. Pattern

Dissect key modifiers (Elasticsearch dissect processor reference)
%{field}
Text up to the next delimiter. The last key takes the rest of the line when nothing follows it.
%{field->}
Right padding: skips repeated copies of the delimiter that follows, so one space or many both match.
%{+field}
Append: adds this value to an earlier key of the same name, joined by append_separator. Used here to rebuild timestamps that contain spaces.
%{+field/2}
Append with order: joins the parts in the numbered order instead of left to right.
%{?name}
Named skip: matches a value and drops it. Same as %{} but readable.
%{}
Empty key: matches and drops. %{->} also skips repeated delimiters.
%{*key} %{&key}
Reference keys: the first value becomes the field name, the second its value.

3. Fields

Names follow the Elastic Common Schema where the meaning is clear. Rename a field here and the pattern changes with it. Numbers get a convert processor; ECS keeps http.version and log.syslog.version as keyword, so they are not converted.

FieldSkipConvert toLine 1 value
Timezone

4. Extraction preview

0lines
0lines matched
0lines not matched
0fields extracted

5. Output

Every example set on this page was run through POST _ingest/pipeline/_simulate on Elasticsearch 8.19.23 and 9.5.5 in our tests, in both modes where dissect applies: every line parsed, and the fields Elasticsearch extracted equalled this preview. The requests are the same on 8.x and 9.x. A pipeline that parses well can still run on a cluster that struggles: Run the full diagnostic.

Read with this tool