子查询 -凯发k8国际|首页

j

spl

子查询

一个子查询常用于作为另外一个spl命令的参数,子查询被包含在双方括号中,将在外部命令执行之前被执行,执行的结果将作为外部spl的参数,大体上存在如下两种用途:

1) 参数化一个搜索(可以理解为query),使用子查询的结果作为query的搜索条件

2) 执行一个独立的搜索,将子查询的结果append(或者join等)到主查询的结果中

举例 查找apache日志中访问次数最多的ip地址的所有事件,可以采用如下写法

logtype:apache and [[ logtype:apache  | stats count(apache.clientip) as count_ by apache.clientip | sort by count_ | limit 1 | fields apache.clientip ]]

子查询返回结果为二维表格形式,行之间采用or关系,行中的列之间采用and关系。 假设子查询

 [[ logtype:apache  | stats count(xx) by apache.clientip, apache.method | fields apache.clientip apache.method ]] 

返回的结果为

apache.clientipapache.method
192.168.1.92   get
192.168.1.33   post

则表示的查询条件为

(apache.client:192.168.1.92 and apache.method:get) or (apache.client:192.168.1.33 and apache.method:post)

注意:

子查询的结果数对查询的性能影响非常大,目前默认的行限制为100条,列未做限制(后续会加上)

1) 子查询结果中的字段仅支持: 字符串类型和数值类型

2) 子查询中不允许出现以下命令:transaction,join