contact@yottabyte.cn
400-085-0159
调查问卷
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