当您需要对日志数据进行结构化信息提取、字段操作和数据过滤时,可以通过使用SPL语言(SLS Processing Language)来解决这些问题。另外,日志服务还提供多级管道级联功能,以便输出经过SPL处理的结果数据。
背景信息
当SPL查询涉及到的字段都有字段索引(并开启统计)的时候,SPL会按照索引模式执行查询分析。如果SPL涉及的字段没有索引,会按照扫描(Scan)模式查询和分析。更多信息,请参见扫描(Scan)查询概述。
支持地域
在其他地域,无论SPL语句中字段是否有索引,都会直接按照扫描模式执行。
华东6(福州-本地地域)、印度尼西亚(雅加达)。
基本语法
基本语法
SPL指令的语法参考 SPL指令。
索引查询语句 | <spl-cmd> ... | <spl-cmd> ...
使用示例
按某个条件过滤原始日志
status:200 | where host like '%www%'
计算出新的字段,计算出的字段也可以再次过滤。
status:200 | extend timediff = cast(endTime as bigint) - cast(beginTime as bigint) | where timediff > 100
将JSON字段展开,丢弃原有的JSON字段。
status:200 | parse-json body | project-away body
索引模式SPL与扫描模式SPL的对比
当SPL查询涉及到的字段都有字段索引(并开启统计)的时候,SPL会自动按照索引模式执行,否则按照扫描模式执行。
对比项 | 索引模式SPL | 扫描模式SPL |
是否需要配置索引 | 需要SPL中涉及到的字段,开启字段索引并开启统计。 | 不需要。 重要 第一级竖线(|)前的索引查询语句仍依赖于索引。 |
性能 | 强 | 一般 |
是否支持随机翻页 | 支持。 | 不支持。 |
日志直方图 | 基于查询语句的查询结果进行展示。 | 基于查询语句的查询结果、扫描进度进行展示。 |
运算符与函数 | ||
字段类型 | SPL语句中出现的字段均按照text类型处理。详情请参考数据类型转换。 | SPL语句中出现的字段均按照text类型处理。详情请参考数据类型转换。 |
结果集大小 | 通过控制台或SDK指定,最大100条。 | 满足下述任一条件,本次扫描结束并返回扫描结果。
|
费用 | 索引流量和索引存储费用。更多信息,请参见按使用功能计费模式计费项。 SPL执行本身不产生额外费用。 | 扫描部分按照流量收费,即基于索引查询后扫描命中的数据量收费。 |
操作方式
在查询日志前,请确保您已采集到日志和创建索引。索引是一种存储结构,用于对日志数据中的一列或多列进行排序。更多信息,请参见创建索引。
控制台
登录日志服务控制台,在目标Logstore的查询和分析页面执行查询操作。具体操作,请参见查询和分析日志。
示例
原始日志为1000万条。查询语句:Status:200 | where Category like '%xx%'
,满足Status:200
且 where Category like '%xx%'
的日志1000条。查询结果界面中的直方图(histogram)展示了这1000条符合整个SPL语句条件的日志随时间变化的分布情况。
API
通过GetLogs(返回结果不压缩后传输)、GetLogsV2(返回结果压缩后传输)接口执行查询操作。