为了能够帮助您更有效地查询日志,Log Service 提供一套查询语法用以表达查询条件。您可以通过 Log Service API 中的
GetLogs 和
GetHistograms 接口或者在 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 开头的所有命中词。注意:该查询最多返回100个符合关键词下结果 |
? | 模糊查询关键字,用于替代一个字符,比如 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。 |
> | 查询某个字段下大于某个数值的日志,例如latency > 100。 |
>= | 查询某个字段下大于或等于某个数值的日志,例如latency >= 100。 |
< | 查询某个字段下小于某个数值的日志,例如latency < 100。 |
<= | 查询某个字段下小于或等于某个数值的日志,例如latency <= 100。 |
= | 查询某个字段下等于某个数值的日志,例如latency = 100。 |
in | 查询某个字段处于某个范围内的日志,使用中括号表示闭区间,使用小括号表示开区间,括号中间使用两个数字,数字中间为若干个空格。例如latency in [100 200]或 latency in (100 200]。 |
[backcolor=transparent]注意:
- 语法关键词不区分大小写。
- 语法关键字的优先级由高到底排序为 : > " > ( ) > and not > or。
- Log Service 还保留以下关键字的使用权,如果您需要使用以下关键字,请使用引号包含起来: sort asc desc group by avg sum min max limit。
- 同时配置全文索引和键值索引时,如果两者的分词字符不一样,那么使用全文查询方式时数据无法查出。
- 使用数值查询的前提条件是给该列设置类型为double或long,如果您没有设置类型,或者数值范围查询的语法不正确,日志服务会将该查询条件解释成全文索引,可能与您的期望的结果不同。
- 如果您之前把某列配置为文本类型,现在改成数值类型,那么之前的数据只支持=查询。
Timeslice 参数 | Histogram 区间数 | 每个区间大小 |
1h | 2 | 1 小时 |
30m | 4 | 30 分钟 |
2m | 60 | 2 分钟 |
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。