阅读77 返回首页    go 微软 go windows


查询语法__API-Reference_日志服务-阿里云

为了能够帮助更有效地查询日志,Log Service提供一套查询语法用以表达查询条件。用户可以通过Log Service API中的GetLogsGetHistograms接口或者在Log Service控制台的查询页面指定查询条件。本章节详细说明该查询条件的语法。

全文索引与键值索引

用户有两种模式建立对日志库索引:

  • 全文索引:将整行日志作为整体进行查询,既不区分键与数值(Key, Value)
  • 键值索引:指定健(Key)情况下进行查询,例如FILE:app, Type:action。在该键下被包含字符串都会命中。

语法关键词

Log Service 查询条件支持如下关键字:

名称 语义
and 双目运算符。形式为query1 and query2,表示query1query2查询结果的交集。如果多个单词间没有语法关键词,默认是and的关系。
or 双目运算符。形式为query1 or query2,表示query1query2查询结果的并集。
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

同时配置全文索引和键值索引时,如果两者的分词字符不一样,那么使用全文查询方式时数据无法查出。

查询示例

  1. 同时包含a和b的日志: a and b 或者 a b
  2. 包含a或者包含b的日志:a or b
  3. 包含a但是不包含b的日志:a not b
  4. 所有日志中不包含a的日志:not a
  5. 查询包含a而且包含b,但是不包括c的日志:a and b not c
  6. 包含a或者包含b,而且一定包含c的日志:(a or b ) and c
  7. 包含a或者包含b,但不包括c的日志:(a or b ) not c
  8. 包含a而且包含b,可能包含c的日志:a and b or c
  9. FILE字段包含apsara的日志: FILE:apsara
  10. FILE 字段包含apsara和shennong的日志:FILE:"apsara shennong" 或者 FILE:apsara FILE: shennong 或者 FILE:apsara and FILE:shennong
  11. 包含and的日志:and
  12. FILE字段包含apsara或者shennong的日志: FILE:apsara or FILE:shennong
  13. file info字段包含apsara的日志:"file info":apsara
  14. 包括引号的日志:"
  15. 查询以shen开头的所有日志:shen*
  16. 查询FILE字段下,以shen开头的所有日志:FILE:shen*
  17. 查询以shen开头,以ong结尾,中间还有一个字符:shen?ong
  18. 查询包括以shen开头,并且包括以aps开头的日志:shen* and aps*
  19. 查询以shen开头的日志的分布,时间片为20分钟: shen*| timeslice 20m | count
  20. 查询topic1和topic2下的所有数据: __topic__:topic1 or __topic__ : topic2
  21. 查询tagkey1下tagvalue2的所有数据:__tag__ : tagkey1 : tagvalue2

其他

指定或跨Topic查询

每个logstore根据topic可以划分成一个或多个子空间,当进行查询时,指定topic可以限定查询范围,达到更快速度。因此我们推荐对logstore有二级分类需求的用户用户使用topic进行划分。

当指定一个或多个topic进行查询时,仅从符合条件的topic中进行查询。但不输入topic,默认查询所有topic下的数据。

使用topic来划分不同域名下日志的例子:

topic

Topic查询例子:

  1. 支持查询所有topic下的数据,在查询语法和参数中都不指定topic意味着查询所有topic的数据。
  2. 支持在query中查询Topic,查询语法为__topic__:topicName。同时仍然支持旧的模式,在url参数中指定topic。
  3. 支持查询多个topic,例如__topic__:topic1 or __topic__:topic2 表示查询topic1和topic2下的数据的并集。

Histogram查询

日志服务新增语法提供了自定义区间的功能。查询语法为:

  1. where_condition | timeslice 1[hms] |count
  2. h为一小时
  3. m为一分钟
  4. s为一秒钟

通过变更timeslice的参数,可以灵活的调整区间大小。例如查询2个小时数据,不同的timeslice参数对应的结果为:

timeslice 参数 Histogram区间数 每个区间大小
1h 2 1小时
30m 4 30分钟
2m 60 2分钟
30s 240 30秒

最后更新:2016-12-13 18:10:24

  上一篇:go Logtail机器组__公共资源说明_API-Reference_日志服务-阿里云
  下一篇:go 错误处理__基本介绍_SDK_日志服务-阿里云