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_number 为 1 或 gender 为 F 的所有文档:
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
该查询返回以下结果:

示例 6:使用值列表过滤
以下查询使用 IN 运算符匹配多个值:
source=accounts
| where state IN ('IL', 'VA')
| fields account_number, state
该查询返回以下结果:

示例 7:过滤缺失数据的记录
以下查询返回 employer 字段为 null 的记录:
source=accounts
| where ISNULL(employer)
| fields account_number, employer
该查询返回以下结果:
| account_number | employer |
|---|---|
| 18 | null |