查询语法__API-Reference_日志服务-阿里云
为了能够帮助更有效地查询日志,Log Service提供一套查询语法用以表达查询条件。用户可以通过Log Service API中的GetLogs和GetHistograms接口或者在Log Service控制台的查询页面指定查询条件。本章节详细说明该查询条件的语法。
全文索引与键值索引
用户有两种模式建立对日志库索引:
- 全文索引:将整行日志作为整体进行查询,既不区分键与数值(Key, Value)
- 键值索引:指定健(Key)情况下进行查询,例如FILE:app, Type:action。在该键下被包含字符串都会命中。
语法关键词
Log Service 查询条件支持如下关键字:
名称 | 语义 |
---|---|
and | 双目运算符。形式为query1 and query2 ,表示query1 和query2 查询结果的交集。如果多个单词间没有语法关键词,默认是and 的关系。 |
or | 双目运算符。形式为query1 or query2 ,表示query1 和query2 查询结果的并集。 |
not | 双目运算符。形式为query1 not query2 ,表示符合query1 并且不符合query2 的结果,相当于query1–query2 。如果只有not query1 ,那么表示从全部日志中选取不包含query1 的结果。 |
( , ) | 左右括号用于把一个或多个子query合并成一个query,用于提高括号内query的优先级。 |
: | 用于key-value对的查询。term1:term2 构成一个key-value对。如果key或者value内有空格,需要用引号把整个key或者value包括起来 |
“ | 把一个关键词转换成普通的查询字符。左右引号内部的任何一个term都会被查询,而不会当成语法关键词。或者在key-value查询中把左右引号内的所有term当成一个整体 |
转义符。用于转义引号,转义后的引号表示符号本身,不会当成转义字符,例如""" |
|
| | 管道运算符,表示前一个计算的基础上进行更多计算,例如query1 | timeslice 1h | count |
timeslice | 时间分片运算符,表示多长时间的数据作为一个整体进行计算,使用方式有timeslice 1h, timeslice 1m,timeslice 1s分别表示以1小时,1分钟,1s作为一个整体。例如query1 | timeslice 1h | count表示查询query这个条件,并且返回以1小时为时间分片的总次数 |
count | 计数运算符,表示日志条数 |
* | 模糊查询关键字,用于替代0个或多个字符,例如:que*,会返回que开头的所有命中词 |
? | 模糊查询关键字,用于替代一个字符,比如 qu?ry,会返回以qu开头,以ry结尾,并且中间还有一个字符的所有命中词 |
__topic__ |
查询某个topic下数据,新的语法下,可以在query中查询0个或多个topic的数据,例如__topic__:mytopicname |
__tag__ |
查询某个tag key下某个tag value,例如 __tag__:tagkey:tagvalue |
source | 查询某个ip的数据,例如source:127.0.0.1 |
语法关键词不区分大小写
语法关键字的优先级由高到底排序为
: > " > ( ) > and not > or
Log Service还保留以下关键字的使用权,如果您需要使用以下关键字,请使用引号包含起来:> = < sort asc desc group by avg sum min max limit
同时配置全文索引和键值索引时,如果两者的分词字符不一样,那么使用全文查询方式时数据无法查出。
查询示例
- 同时包含a和b的日志:
a and b
或者a b
- 包含a或者包含b的日志:
a or b
- 包含a但是不包含b的日志:
a not b
- 所有日志中不包含a的日志:
not a
- 查询包含a而且包含b,但是不包括c的日志:
a and b not c
- 包含a或者包含b,而且一定包含c的日志:
(a or b ) and c
- 包含a或者包含b,但不包括c的日志:
(a or b ) not c
- 包含a而且包含b,可能包含c的日志:
a and b or c
- FILE字段包含apsara的日志:
FILE:apsara
- FILE 字段包含apsara和shennong的日志:
FILE:"apsara shennong"
或者FILE:apsara FILE: shennong
或者FILE:apsara and FILE:shennong
- 包含and的日志:
and
- FILE字段包含apsara或者shennong的日志:
FILE:apsara or FILE:shennong
- file info字段包含apsara的日志:
"file info":apsara
- 包括引号的日志:
"
- 查询以shen开头的所有日志:
shen*
- 查询FILE字段下,以shen开头的所有日志:
FILE:shen*
- 查询以shen开头,以ong结尾,中间还有一个字符:
shen?ong
- 查询包括以shen开头,并且包括以aps开头的日志:
shen* and aps*
- 查询以shen开头的日志的分布,时间片为20分钟:
shen*| timeslice 20m | count
- 查询topic1和topic2下的所有数据:
__topic__:topic1 or __topic__ : topic2
- 查询tagkey1下tagvalue2的所有数据:
__tag__ : tagkey1 : tagvalue2
其他
指定或跨Topic查询
每个logstore根据topic可以划分成一个或多个子空间,当进行查询时,指定topic可以限定查询范围,达到更快速度。因此我们推荐对logstore有二级分类需求的用户用户使用topic进行划分。
当指定一个或多个topic进行查询时,仅从符合条件的topic中进行查询。但不输入topic,默认查询所有topic下的数据。
使用topic来划分不同域名下日志的例子:
Topic查询例子:
- 支持查询所有topic下的数据,在查询语法和参数中都不指定topic意味着查询所有topic的数据。
- 支持在query中查询Topic,查询语法为
__topic__:topicName
。同时仍然支持旧的模式,在url参数中指定topic。 - 支持查询多个topic,例如
__topic__:topic1 or __topic__:topic2
表示查询topic1和topic2下的数据的并集。
Histogram查询
日志服务新增语法提供了自定义区间的功能。查询语法为:
where_condition | timeslice 1[hms] |count
h为一小时
m为一分钟
s为一秒钟
通过变更timeslice的参数,可以灵活的调整区间大小。例如查询2个小时数据,不同的timeslice参数对应的结果为:
timeslice 参数 | Histogram区间数 | 每个区间大小 |
---|---|---|
1h | 2 | 1小时 |
30m | 4 | 30分钟 |
2m | 60 | 2分钟 |
30s | 240 | 30秒 |
最后更新:2016-12-13 18:10:24
上一篇:
Logtail机器组__公共资源说明_API-Reference_日志服务-阿里云
下一篇:
错误处理__基本介绍_SDK_日志服务-阿里云
推送去重设备统计__API列表_OpenAPI 1.0_移动推送-阿里云
清空实例缓存__管理实例_用户指南_云数据库 Memcache 版-阿里云
caffe最佳实践__深度学习最佳实践_高性能计算-阿里云
Android SDK配置__Android SDK手册_App SDK 手册_移动推送-阿里云
CNAME接入状态说明__运维问题_产品常见问题_DDoS 高防IP-阿里云
阿里云发布了一款机器人,曾经一天服务600万用户
怎样授权一个子用户管理两台指定的ECS实例___云服务器(ECS)授权问题_授权常见问题_访问控制-阿里云
查询镜像共享__镜像相关接口_API 参考_云服务器 ECS-阿里云
是否可以申请一个固定号码进行短信发送?__常见问题_短信服务-阿里云
移动端播放器SDK__视频播放_使用手册_媒体转码-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云