Boolean expressions with logical operators
The Splunk search processing language (SPL) supports the following logical operators in Boolean expressions: AND
, OR
, NOT
, and XOR
.
The operators must be capitalized.
The AND operator is always implied between terms, that is: web error
is the same as web AND error
. So unless you want to include it for clarity reasons, you should not need to specify the AND operator.
The NOT operator only applies to the term immediately following NOT. To apply to multiple terms, you must enclose the terms in parenthesis.
Inclusion is generally better than exclusion. Searching for "access denied" will yield faster results than NOT "access granted".
Order of evaluation
The order in which the Splunk software evaluates Boolean expressions depends on whether you are using the expression with the search
command, the eval
command, or the where
command. This includes the implied search
command at the beginning of the search.
The search
command evaluates OR before AND operators. The eval
and where
commands evaluate AND before OR operators.
The following table describes the order in which the Boolean expressions are evaluated by the commands.
Order | Search command | Eval command | Where command |
---|---|---|---|
1 | Expressions within parentheses | Expressions within parentheses | Expressions within parentheses |
2 | NOT clauses
|
NOT clauses
|
NOT clauses
|
3 | OR clauses
|
AND clauses
|
AND clauses
|
4 | AND clauses
|
OR clauses
|
OR clauses
|
5 | XOR clauses
|
XOR clauses
|
XOR clauses
|
Examples
The following examples show how Splunk software processes Boolean expressions using logical operators.
Search command example with AND and OR
Consider the following search:
host="www1" AND status=200 OR action="addtocart"
With the search
command, the AND is implied between the expressions. The same results are returned if you omit the AND in the search and specify host="www1" status=200 OR action="addtocart"
.
This search is processed as:
host="www1" AND (status=200 OR action="addtocart")
This search returns:
- All of the events where the host is
www1
and the status is either200
or the action isaddtocart
.
With the search
command, the OR is processed before the AND.
The where
command processes this search differently, as shown in the next example.
Where command example with AND and OR
Consider the following search:
...| where host="www1" AND status=200 OR action="addtocart"
This search is processed as:
...| where (host="www1" AND status=200) OR action="addtocart"
This search returns:
- All of the events where the host is
www1
and the status is200
. - All of the events where the action is
addtocart
.
With the where
command the AND is processed before the OR.
Use CASE() and TERM() to match phrases | Difference between != and NOT |
This documentation applies to the following versions of Splunk® Enterprise: 7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.0.4, 7.0.5, 7.0.6, 7.0.7, 7.0.8, 7.0.9, 7.0.10, 7.0.11, 7.0.13, 7.1.0, 7.1.1, 7.1.2, 7.1.3, 7.1.4, 7.1.5, 7.1.6, 7.1.7, 7.1.8, 7.1.9, 7.1.10, 7.2.0, 7.2.1, 7.2.2, 7.2.3, 7.2.4, 7.2.5, 7.2.6, 7.2.7, 7.2.8, 7.2.9, 7.2.10, 7.3.0, 7.3.1, 7.3.2, 7.3.3, 7.3.4, 7.3.5, 7.3.6, 7.3.7, 7.3.8, 7.3.9, 8.0.0, 8.0.1, 8.0.2, 8.0.3, 8.0.4, 8.0.5, 8.0.6, 8.0.7, 8.0.8, 8.0.9, 8.0.10, 8.1.0, 8.1.1, 8.1.3, 8.1.4, 8.1.5, 8.1.6, 8.1.7, 8.1.8, 8.1.9, 8.1.11, 8.1.13, 8.2.0, 8.2.1, 8.2.2, 8.2.3, 8.2.4, 8.2.5, 8.2.6, 8.2.7, 8.2.8, 8.2.9, 8.2.10, 8.2.11, 8.2.12, 9.0.0, 9.0.1, 9.0.2, 9.0.3, 9.0.4, 9.0.5, 9.0.6, 9.0.7, 9.0.8, 9.0.9, 9.0.10, 9.1.0, 9.1.1, 9.1.2, 9.1.3, 9.1.4, 9.1.5, 9.1.6, 9.1.7, 9.2.0, 9.2.1, 9.2.2, 9.2.3, 9.2.4, 9.3.0, 9.3.1, 9.3.2, 9.4.0, 8.1.10, 8.1.12, 8.1.14, 8.1.2
Feedback submitted, thanks!