过滤器语法
为了限制 API 检索请求( HTTP GET)中返回的结果,大多数返回资源列表的 API 端点都支持 参数。 IBM® QRadar® 返回资源列表的 API 端点都支持 filter 参数。
filter 参数语法对于支持它的所有端点都是一致的。 请参阅端点的文档以确定过滤器参数是否适用于该端点。 过滤器语法的任何限制都包含在该端点的描述中。 查询参数在发送前必须经过双 URL 编码。
比较运算符
过滤器比较运算符表描述了可用作过滤器参数一部分的比较运算符。
| 运算符 | 描述 | 过滤器语法示例 |
|---|---|---|
= |
标识与返回的指定值之间的等同性。 | 要查找 status=CLOSED所在的攻击,请使用以下语法:
|
> |
标识大于指定的值。 | 要查找 credibility > 3所在的攻击,请使用以下语法:
|
< |
标识小于指定的值。 | 要查找 magnitude < 9所在的攻击,请使用以下语法:
|
<= |
标识小于或等于指定的值。 | 要查找 id <= 1004所在的攻击,请使用以下语法:
|
| >= | 标识大于或等于指定的值。 | 要查找
|
|
标识不等于指定的值。 | 以下示例过滤所有不等于 5 的标识:
|
in |
标识至少等于列表中的一个指定值。 | 语法: id in (1001,1111,1200)示例: |
not in |
标识不等于列表中的任何指定值。 | 语法: id not in (1001,1002,1003):示例: |
between … and … |
标识介于两个指定值之间。 | 语法: id between 0 and 3:示例: |
not between … and … |
标识不在两个指定值之间。 | 语法: id not between 30 and 31:示例: |
is null |
标识为空。 | 语法: assigned_to is null:示例: |
is not null |
标识不为空。 | 语法: assigned_to is not null:示例: |
空值和比较运算符
当过滤的字段具有 "null" 值时,比较运算符的行为方式如下所示:
测试空值的最佳方法是使用 "is null" 或 "is not null" 运算符。
逻辑运算符
使用逻辑运算符 OR, AND和 NOT 对子表达式执行逻辑操作。 下表提供了如何在过滤器中使用逻辑运算符的示例。
| 运算符 | 描述 | 示例 |
|---|---|---|
or |
对两个子表达式执行逻辑 OR 操作。 子表达式可以是比较节点或其他逻辑节点。 | assigned_to 不为空或 id =
111:
|
and |
对两个子表达式执行逻辑 AND 操作。 子表达式可以是比较节点或其他逻辑节点。 | assigned_to 不为空且 id =
111:
|
not |
对子表达式执行逻辑 NOT 操作。 | protected =true and not id in
(111,112,113)
|
指定用于比较的 JSON 字段
下表说明如何指定 JSON 字段以用于过滤器中的比较运算符。
| JSON 字段示例 | 描述 | 示例 |
|---|---|---|
|
将过滤器直接应用于返回的对象中的字段时,将按名称指定该字段。 |
|
|
将过滤器应用于嵌套在子对象中的字段时,请使用方括号来指定内部字段。 |
|
|
对于不存在字段标签 (例如,字符串,数字或布尔值) 的简单 JSON 类型,请使用 . 运算符。 |
|
在过滤器中指定字符串和数字值
对具有非字母数字字符的值的字符串进行过滤时,必须将目标字符串括在引号中。 对数字值进行过滤时,数字值可以遵循以下条件:
- 以前导 + 或-sign 开头。
- 包含或以小数点开头。
- 使用 e 表示法包含指数。
使用 CONTAINS 运算符过滤复杂对象
您可以使用 CONTAINS 运算符来过滤复杂对象。 使用 CONTAINS 运算符来测试列表或映射的内容。 在运算符左侧,是标准格式的标识,例如 x (y (z))。 标识必须引用作为列表,映射或集合的元素。 运算符右侧是一个表达式,用于指定必须如何匹配列表中的对象。 有两个使用 CONTAINS 运算符的基本用例:
- 检查的列表包含字符串或数字之类的简单元素。
- 该列表包含复杂对象。
- 包含简单类型的列表
- 对于包含简单类型 (例如字符串或数字) 的列表,表达式是同一类型的值。 对于单一比较,不需要方括号。
- 包含复杂对象的列表
对于包含复杂对象的列表,表达式是列表中对象的完整过滤表达式。 此子过滤器表达式使用与任何其他过滤器相同的语法。 您可以使用子过滤器中的任何运算符来测试原始列表中的子列表。 此表达式中的标识与 CONTAINS 运算符正在对其进行操作的列表中的对象相关。 在复杂子过滤器表达式中,需要方括号。
LIKE 运算符
使用 LIKE 运算符来检索部分字符串匹配项。
LIKE 运算符使用以下格式: identifier like "expression"。 表达式周围的引号是必需的。 支持单引号和双引号。 LIKE 关键字执行区分大小写的匹配。
支持以下通配符。 如果在字符串中使用通配符,那么必须对其进行转义。
| 通配符 | 描述 |
|---|---|
| % | 匹配由零个或多个字符组成的字符串 |
| _ | 与任何单个字符匹配 |
GET /path/to/api
[
{
"hostname": "server.domain1"
},
{
"hostname": "server.domain2"
},
{
"hostname": "SERVER.domain"
},
{
"hostname": "server.DOMAIN"
}
]
您可以在同一表达式中组合通配符。 例如,要在 domain1 或 domain2中查找服务器,请使用表达式: hostname
LIKE "%.domain_"。
GET /path/to/api?filter=hostname%20LIKE%20%22%25.domain_%22
[
{
"hostname": "server.domain1"
},
{
"hostname": "server.domain2"
}
]
请注意,未返回 SERVER.domain ,因为下划线 (_) 没有匹配的尾部字符。
ILIKE 运算符
使用 ILIKE 运算符来检索不区分大小写的部分字符串匹配。
GET /path/to/api
[
{
"hostname": "server.domain1"
},
{
"hostname": "server.domain2"
},
{
"hostname": "SERVER.domain"
},
{
"hostname": "server.DOMAIN"
}
] hostname ILIKE "server.domain" 的过滤器将生成以下数据集合:GET /path/to/api?filter=hostname%20ILIKE%20%22server.domain%22'
[
{
"hostname": "SERVER.domain"
},
{
"hostname": "server.DOMAIN"
}
]