SPL是Search Processing Language的简写,是高级搜索功能的实现。
search/spl
<table border cellspacing=0 cellpadding=10 >
all
和用户定义的日志分组名all
now
表示当前时间-1d
,-1m
-3d,now
* | eval app=appname | eval rawlen=len(raw_message)
|-$!|
分隔的field名和值。每个field的name和value之间用冒号分隔,value用双引号括起来;包括tag、 appname、 logtype也可通过此参数过滤:样例如logtype:"apache"|-$!|appache.status:"200"
desc
和asc
desc
0
开始的数字0
1
的数字20
</table>
http://yottaapi.test:8190/v0/search/spl/?query=%2A+%7C+eval+rawlen%3Dlen%28raw_message%29+%7C+stats+avg%28rawlen%29+as+arl+by+hostname+%7C+sort+by+arl&ak=26d79d9f3e5033d4be8ad5c41355e9be&sign=5152e6d60a7811b84ac28445a266a636&qt=1454323425452&time_range=-200m%2Cnow
其中query经过了url转义,其原值为”* | eval rawlen=len(raw_message) | stats avg(rawlen) as arl by hostname | sort by arl”。 |
因为SPL的语法用户可以自由组合,并且会不断扩充新语义,对应的返回格式为了能兼容现在和未来丰富的功能,我们对返回结果的表达进行了抽象:所有结果最终都会以用json表达的二维表格的形式返回,即体现为下述的fields
,rows
两个字段中。
具体返回格式为:
result
: 表示请求是否成功,为Boolean
。fields
: 结果表格的表头数组,数组的每个元素是:
name
: 列名。type
: 列的值的类型,有INT
,LONG
,UNKNOWN
,DOUBLE
。rows
: 结果表格的行的数组。page
: 当前在结果表格的第几页。size
: 结果表格每页多少行。total
: 返回的结果表格的总行数。type
: 辅助字段,合法值为”QUERY”,”TRANSACTION”,”STATS”,见下文结果类型具体解释。