where

where 命令用于过滤搜索结果。它只返回符合指定条件的结果。

语法

where 命令的语法如下:

where <boolean-expression>

参数

where 命令支持以下参数。

参数 必需/可选 描述
<boolean-expression> 必需 用于过滤结果的条件。仅返回该条件求值为 true 的行。

示例 1:按数值过滤

以下查询返回 balance 大于 30000 的账户:

source=accounts
| where balance > 30000
| fields account_number, balance

该查询返回以下结果:

account_number balance
1 39225
13 32838

示例 2:使用组合条件过滤

以下查询使用 AND 运算符组合多个条件:

source=accounts
| where age > 30 AND gender = 'M'
| fields account_number, age, gender

该查询返回以下结果:

account_number age gender
1 32 M
6 36 M
18 33 M

示例 3:过滤具有多个可能值的记录

以下查询获取 accounts 索引中 account_number1genderF 的所有文档:

source=accounts
| where account_number=1 or gender="F"
| fields account_number, gender

该查询返回以下结果:

account_number gender
1 M
13 F

示例 4:按文本模式过滤

LIKE 运算符允许使用通配符对字符串字段进行模式匹配。

匹配单个字符

以下查询使用下划线 (_) 来匹配单个字符:

source=accounts
| where LIKE(state, 'M_')
| fields account_number, state

该查询返回以下结果:

account_number state
18 MD

匹配多个字符

以下查询使用百分号 (%) 来匹配多个字符:

source=accounts
| where LIKE(state, 'V%')
| fields account_number, state

该查询返回以下结果:

account_number state
13 VA

示例 5:通过排除特定值过滤

以下查询使用 NOT 运算符来排除匹配的记录:

source=accounts
| where NOT state = 'CA'
| fields account_number, state

该查询返回以下结果:

../../../../_images/where-5.png

示例 6:使用值列表过滤

以下查询使用 IN 运算符匹配多个值:

source=accounts
| where state IN ('IL', 'VA')
| fields account_number, state

该查询返回以下结果:

../../../../_images/where-6.png

示例 7:过滤缺失数据的记录

以下查询返回 employer 字段为 null 的记录:

source=accounts
| where ISNULL(employer)
| fields account_number, employer

该查询返回以下结果:

account_number employer
18 null