SPL是Search Processing Language的简写,是高级搜索功能的实现。
search/spl
<table border cellspacing=0 cellpadding=10 >
all和用户定义的日志分组名allnow表示当前时间-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和ascdesc0开始的数字01的数字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”,见下文结果类型具体解释。