日志服务提供一套查询语法用于设置查询条件,帮助您更有效地查询日志。
查询方式
查询语句用来指定日志查询时的过滤规则,返回符合条件的日志。根据索引配置方式可分为全文查询和字段查询,根据查询精确程度可分为精确查询和模糊查询。
说明
- 同时配置了全文索引和字段索引时,以字段索引的配置为准。
- 只有在字段索引中将字段的数据类型设置为double、long后,才能通过数值范围查询对应的日志。如果字段的数据类型不被设置为double、long或者查询时数值范围的语法错误,那么日志服务会按照全文查询方式进行查询,这样查询到的结果可能与您期望的结果不同。例如字段owner_id为非double、long类型,则执行查询语句
owner_id>100
时,会返回同时包含owner_id、>(非分词符)、100这三个词的日志。 - 如果将字段的类型从text类型改成double、long类型,则修改索引之前的日志只支持等号(=)查询。
- 全文查询和字段查询
查询方式 说明 示例 全文查询 配置全文索引后,日志服务根据您设置的分词符将整条日志拆分成多个词。您可以指定关键字(字段名、字段值)和查询规则进行查询。 PUT and cn-shanghai
表示查询同时包含关键字PUT和cn-shanghai的日志。字段查询 配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询。根据字段索引中设置的数据类型,您可以进行多种类型的基础查询和组合查询。更多信息,请参见索引数据类型。 request_time>60 and request_method:Ge*
表示查询request_time字段值大于60且request_method字段值以Ge开头的日志。 - 精确查询和模糊查询
查询方式 说明 示例 精确查询 使用完整的词进行查询。 host:www.yl.mock.com
表示查询host字段值为www.yl.mock.com的日志。PUT
表示查询包含关键字PUT的日志。
模糊查询 在查询语句中指定一个64个字符以内的词,在词的中间或者末尾加上模糊查询关键字,即星号(*)或问号(?),日志服务会在所有日志中为您查询到符合条件的100个词,返回包含这100个词并满足查询条件的所有日志。指定的词越精确,查询结果越精确。 模糊查询是一种采样查询,查询机制如下所示:- 当您开启字段索引,且指定某个字段进行查询时,日志服务从该字段的索引数据中随机采样,返回部分结果并不是全量扫描底层数据。
- 当您开启全文索引,且没有指定某个字段进行查询时,日志服务从全文索引数据中随机采样,返回部分结果并不是全量扫描底层数据。
addr*
表示在所有日志中查找以addr开头的100个词,并返回包含这些词的日志。host:www.yl*
表示在所有日志中查找host字段的值以www.yl开头的100个词,并返回包含这些词的日志。
运算符
查询语句支持如下运算符。
说明
- 除in运算符外,其他运算符不区分大小写。
- 日志服务保留以下运算符的使用权,如果您需要使用以下运算符作为查询关键字,请使用双引号("")包裹:sort、asc、desc、group by、avg、sum、min、max和limit。
- 运算符的优先级由高到低排序如下所示:
- 冒号(:)
- 双引号("")
- 圆括号( )
- and
- not
- or
运算符 | 说明 |
---|---|
and | and运算符。例如request_method:GET and status:200 。
如果多个关键词之间没有语法关键词,默认为and关系,例如 |
or | or运算符。例如request_method:GET or status:200 。
|
not | not运算符。例如request_method:GET not status:200 、not status:200 。
|
( ) | 用于提高括号内查询条件的优先级。例如(request_method:GET or request_method:POST) and status:200 。
|
: | 用于字段查询(Key:Value),例如request_method:GET 。
如果字段名称或者字段值内有空格、冒号(:)等保留字符,请使用双引号("")包裹字段名称或者字段值,例如 |
"" | 使用双引号("")包裹一个语法关键词,可以将该语法关键词转换成普通字符。例如"and" 表示查询包含and的日志,此处的and不代表运算符。
在字段查询中双引号("")内的所有词被当成一个整体。 |
\ | 转义符号,用于转义双引号(""),转义后的引号表示符号本身。例如日志内容为instance_id:nginx"01" ,您可以使用instance_id:nginx\"01\" 进行查询。
|
* | 通配符查询,匹配零个、单个、多个字符。例如host:www.yl.mo*k.com 。
说明 日志服务会在所有日志中为您查询到符合条件的100个词,返回包含这100个词并满足查询条件的所有日志。
|
? | 通配符查询,匹配单个字符。例如host:www.yl.mo?k.com 。
|
> | 查询某字段的值大于某数值的日志。例如request_time>100 。
|
>= | 查询某字段的值大于或等于某数值的日志。例如request_time>=100 。
|
< | 查询某字段的值小于某数值的日志。例如request_time<100 。
|
<= | 查询某字段的值小于或等于某数值的日志。例如request_time<=100 。
|
= | 查询某字段的值等于某数值的日志。针对double、long类型的字段,等号(=)和冒号(:)作用相同。例如request_time=100 等同于request_time:100 。
|
in | 查询某字段的值处于某数值范围内的日志,中括号表示闭区间,小括号表示开区间,两个数字之间使用空格分隔。例如request_time in [100 200] 或request_time in (100 200] 。
说明 in只能为小写字母。
|
__source__ | 查询某个日志源的日志,支持通配符。例如__source__:"192.0.2.*" 。
注意 日志服务中的__source__为保留字段,可缩写为source。如果您自定义的字段中存在source字段,则会与日志服务保留字段source冲突,此时您需要使用Source、SOURCE等词查询自定义的字段。
|
__tag__ | 通过元数据信息查询日志。例如__tag__:__receive_time__:1609837139 。
|
__topic__ | 查询某日志主题下的日志。例如__topic__:nginx_access_log 。
|
查询语句示例
查询需求 | 查询语句 |
---|---|
查询GET请求成功(状态码为200~299)的日志。 |
|
查询来自非上海地域的GET请求的日志。 |
|
查询GET请求或POST请求的日志。 |
|
查询非GET请求的日志。 |
|
查询GET请求或POST请求成功的日志。 |
|
查询GET请求或POST请求失败的日志。 |
|
查询GET请求成功(状态码为200~299)且请求时间小于60秒的日志。 |
|
查询请求时间为60秒的日志。 |
|
查询请求时间大于等于60秒,并且小于200秒的日志。 |
|
http_user_agent字段的值中包含Firefox的日志。 |
|
http_user_agent字段的值中包含Linux和Chrome的日志。 |
|
包含and的日志。 |
此处的and为普通字符串,不代表运算符。 |
http_user_agent字段的值中包含Firefox或Chrome的日志。 |
|
file info字段的值中包含apsara的日志。 |
|
查询以cn开头的日志。 |
|
查询region字段的值是以cn开头的日志。 |
|
查询region字段的值包含cn*的日志。 |
|
查询region字段的值以hai结尾的所有日志。 | 暂不支持 |
查询以mo开头,以la结尾,中间还有一个字符的日志。 |
|
查询以mo开头,以la结尾,中间包含零个、单个或多个字符的日志。 |
|
查询包含以Moz开头的词和以Sa开头的词的日志。 |
|
查询https日志主题和http日志主题下的日志。 |
|
查询采集于192.0.2.1主机的日志。 |
|
查询remote_user字段的值不为空的日志。 |
|
查询remote_user字段的值为空的日志。 |
|
查询不存在remote_user字段的日志。 |
|
查询存在remote_user字段的日志。 |
|
查询request_uri字段值为/request/path-2的日志。 |
|
在文档使用中是否遇到以下问题
更多建议
匿名提交