Skip to main content

Keywords & booleans

This is the matching logic of the implied search command at the front of the pipeline. Search requests are written with keywords, quoted phrases, boolean expressions, wildcards, field name/value pairs, and comparison expressions.

Keywords and phrases

Bare words are matched as terms. Multiple terms are AND-ed together automatically:

index=web error timeout ← events containing BOTH "error" AND "timeout"

Wrap multi-word phrases in quotes to match them exactly:

"connection refused"
"GET /trade/app?action=logout"

Boolean operators

AND is implied between terms; OR and NOT must be explicit. Operators are uppercase. Use parentheses to group:

index=web error OR warning
index=web error NOT timeout
index=web (error OR fatal) NOT debug

Wildcards

* matches any number of characters:

index=web status=4* ← 400, 404, 418, ...
index=web fail* ← fail, failed, failure
Wildcards aren't free

Leading wildcards (*error) and broad wildcards force Splunk to scan far more data. Prefer specific terms — see the specificity tip below.

Field name/value pairs

Match on extracted fields directly:

index=web status=404 method=GET clientip=10.0.0.5

Comparison expressions

For numeric and lexicographic comparisons, use the operators = != < > <= >=:

index=web status>=500 ← server errors
index=web bytes>1000000 ← responses over ~1 MB
index=web status!=200 ← anything that wasn't a clean 200

This is still part of the base search — it filters rows as data comes off disk. (For comparisons between two fields, or on computed values, you need where instead.)

Be as specific as you can

Splunk's optimization guidance calls this out directly:

Search as specifically as you can. For example, fatal_error not *error*.

A precise term lets Splunk use its index efficiently; a broad wildcard makes it read and scan far more. Every term you add here shrinks the dataset before any | command runs.

Next: the where command for filters the base search can't express.