Skip to main content

Format

Formatting is the fourth and final stage of building a search. The report stage handed you a small summary table; now you put it in the right order and shape it for whoever's reading — a person, a dashboard panel, or an alert.

This stage is cosmetic — and that's the point

Filtering, transforming, and reporting decided what the answer is. Formatting only decides how it looks: row order, how many rows, column order, column names. Do it last, on the already-tiny result set.

The mental model

By now the heavy lifting is done and the table is small. These commands reorder rows, trim to the rows worth showing, and tidy the columns — they don't go back to disk or recompute anything.

... | stats count by uri_path ← the report (summary table)
| sort -count ← order: busiest first
| head 10 ← limit: just the top 10
| rename uri_path AS "Page", count AS "Hits" ← present: readable headers

The formatting commands

sort — order the rows →

Order the result set by one or more fields, ascending or descending, with an optional row cap.

head, tail & reverse — limit & flip →

Keep just the first or last N rows, or reverse the order of the set.

table, fields & rename — present →

Choose the columns and their order, and give them human-readable names for the final output.

Where this sits in the pipeline

This is the end of the line. A fully ordered search reads top to bottom as filter → transform → report → format:

index=web sourcetype=access_combined status>=500 earliest=-24h ← filter
| rex field=_raw "user=(?<username>\w+)" ← transform
| stats count by username ← report
| sort -count | head 10 | rename username AS "User" ← format

Next: start with sort.