You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
检索日志
检索语法
复制全文
下载 pdf
检索语法
本文介绍日志服务检索功能支持的检索语法。​
Demo 中心​
日志服务 Demo 中心提供了检索语句 Demo,方便您快速体验功能。单击 查询语法案例 立即体验。​
注意​
Demo 中心的数据为演示数据,请勿用于生产环境。​
注意事项​
  • 语法操作符不区分大小写,例如 AND、and 均表示检索逻辑运算符。​
  • 逻辑操作(AND,OR,&&,!等)必须使用半角括号(())明确逻辑操作优先级,否则搜索到的结果可能和预期不一致。例如搜索某台机器上 log 目录下不包含 error 的日志,可指定检索条件为 ((__source__:192.168.10.10 AND __path__:\/var\/log\/*) NOT error)。​
  • 多个检索语句用空格分隔时,表示“与”逻辑,即等同于 AND。例如 warning error 等同于 warning AND error,表示检索内容中包含关键词 warning 和 error 的日志。​
  • 检索语法中的运算符均为日志服务的保留字符,若检索关键字中包含这些语法保留字符,均需要转义。​
检索方式​
日志服务支持全文检索和键值检索,详细说明如下表所示。​
​
检索方式​
说明​
全文检索​
输入检索条件时,直接输入关键词,无需指定日志字段名,日志服务会根据指定的分词符切分原始日志,当分词后的日志中包含符合检索条件的词即匹配。检索语句格式如下:​
​
keywords1 [ [ and | or | not ] keywords2 ] ...​
​
其中,keywords 为需要检索的关键词,支持与运算符结合使用。例如,404 AND 500 表示查询包含 404 和 500 关键字的所有日志。​
说明​
  • 开启全文索引后才能进行全文检索。​
  • 在检索语句中,如果检索内容存在特殊字符(空格、中文等)、检索运算符(and、or 等)、索引分词符等内容时,需要使用双引号("")包裹,例如"cn guilin"。​
键值检索​
(Key:Value)​
输入检索条件时,需要指定字段名称和字段值,如果日志内指定字段的值符合指定的检索条件即匹配。检索语句格式:​
​
key1 [ : | > | >= | < | <= | = ] value1 [ [ and | or | not ] key2 [ : | > | >= | < | <= | = ] value2 ]...​
​
其中,key 为索引字段。例如,status:500 表示检索 status 为 500 的访问日志。​
说明​
  • 在检索语句中,如果字段名或字段值中存在特殊字符(空格、中文等)、检索运算符(and、or 等)、索引分词符等内容时,需要使用双引号("")包裹,例如"cn guilin"。​
  • 仅 long 和 double 类型的字段支持数值范围查询。​
  • 开启键值索引后才能进行键值检索。​
​
检索精度​
日志服务支持精确查询和模糊查询,详细说明如下表所示。​
​
检索精度​
说明​
示例​
精确查询​
检索时指定完整的关键词,即通过完整的关键词进行匹配。​
  • 例如指定检索条件为 GET,表示查询包含关键词 GET 的日志。​
  • 日志服务检索数据时采用分词法,精确查询的结果并非完全精准,例如执行检索语句 successful request 时,日志服务将根据 successful and request 语句进行检索,同时包含 successful、 request 的日志都会被匹配到,而非精确匹配短语 successful request。​
  • 如果您要完全匹配短语 successful request ,可使用短语查询或 LIKE 语法。详细说明,请参考如何精准检索短语日志。​
  • region: cn-shanghai:查询 region 字段值包含 cn-shanghai 的日志。​
  • URL:#"successful request":查询包含短语 successful request 的日志。​
  • * | SELECT * WHERE "__content__" LIKE '%Error 2024-06-24%':查询__content__ 字段中包含短语 Error 2024-06-24 的日志。​
模糊查询​
检索条件中仅指定关键词的部分字符,即在关键字中加上通配符星号(*)或问号(?),日志服务会匹配符合条件的 100 个词,并返回满足检索条件且包含这 100 词中的日志。​
例如检索条件 erro* 表示在所有日志中查询以 erro 开头的 100 个词,然后返回包含这 100 个词并满足检索条件的所有日志。详细说明,请参考如何模糊检索日志?。​
  • 指定的词越精确,查询结果越精确。​
  • 星号(*)或问号(?)只能出现在关键词的中间或末尾,不能放在词的开头。​
  • 使用双引号("")包裹星号(*)或问号(?)后,星号(*)或问号(?)仅表示普通字符,不具备模糊匹配功能。​
  • 数值类型(long、double)的字段不支持使用星号(*)或问号(?)进行模糊查询。您可以使用数值范围进行查询,例如指定 age:{20 TO 30}。​
  • TopicID:6d*67:查询包含字段名为 TopicID,字段值以 6d 开头,以 67 结尾的日志。​
  • cn*:查询包含以 cn 开头的词的日志。​
​
运算符​
日志服务支持的检索运算符如下表所示。​
​
操作符​
说明​
示例​
AND​
与逻辑操作符,表示取多个搜索结果的交集,指定多个逻辑操作时请使用半角括号()明确逻辑操作优先级。​
__path__:\/var\/log\/* AND error​
OR​
或逻辑操作符,表示取多个搜索结果的并集。指定多个逻辑操作时请使用半角括号()明确逻辑操作优先级。​
error OR warning​
NOT​
非逻辑操作符,表示搜索结果不包含 NOT 之后的关键词。指定多个逻辑操作时请使用半角括号()明确逻辑操作优先级。​
ERROR AND NOT __path__:\/var\/log\/*​
TO​
范围逻辑操作符,TO 前后应加空格。​
如果开始值大于结束值,则会自动替换。即 age:[20 TO 1] 与 age:[1 TO 20] 等价。​
age:[1 TO 20]​
''​
单引号,单引号中的字符串包含预设的分词符时,被分词符拆分后的各个关键字之间为 AND 关系。​
使用单引号'包裹的星号*和问号?表示通配符。​
'today is friday'​
""​
双引号,双引号中的字符串包含预设的分词符时,被分词符拆分后的各个关键字之间为 AND 关系。​
使用双引号"包裹的星号*和问号?不表示通配符,仅代表普通字符。​
__hostname__:"Jone Doe"​
:​
冒号,表示键值检索,返回包含指定 Key 和 Value 的日志。​
level:info​
*​
通配符,表示模糊查询。通配符*可以匹配零个、单个、多个字符。​
使用双引号("")包裹星号(*)或问号(?)后,星号(*)或问号(?)仅表示普通字符,不具备模糊匹配功能。例如:​
  • gu* 表示匹配以 gu 开头的关键词。​
  • "gu*" 表示匹配关键词 gu* 。​
level:erro*​
?​
通配符,表示模糊查询。通配符?可以匹配单个字符。​
使用双引号("")包裹星号(*)或问号(?)后,星号(*)或问号(?)仅表示普通字符,不具备模糊匹配功能。例如:​
  • gu?n 表示匹配以 gu 开头,以 n 结尾,且中间还有一个字符的关键词。​
  • "gu?n" 表示匹配关键词 gu?n。​
level:erro?​
()​
分组操作符,用于控制多个逻辑运算之间的优先级。​
((__source__:192.168.10.10 AND __path__:\/var\/log\/*) NOT error)​
=​
等号,表示查询指定 value 的日志。​
age=18​
!=​
不等号,表示查询不包含指定 value 的日志。​
age!=18​
>​
范围操作符,表示在数值类型的字段中,查询 value 大于某个数值的日志。​
age>18​
>=​
范围操作符,表示在数值类型的字段中,查询 value 大于等于某个数值的日志。​
age>=18​
<​
范围操作符,表示在数值类型的字段中,查询 value 小于某个数值的日志。​
age<18​
<=​
范围操作符,表示在数值类型的字段中,查询 value 小于等于某个数值的日志。​
age<=18​
[]​
范围操作符,范围中包含边界值。​
age:[20 TO 30]​
{}​
范围操作符,范围中不包含边界值。​
age:{20 TO 30}​
\​
转义符。如果查询的关键词中包含保留字符,则需要通过转义符进行转义后再检索。转义后的字符代表字符本身,而不是代表关键字。​
需要转义的字符包括 + - = & | > < ! ( ) { } [ ] ^ " ~ * ? : \ / 。​
说明​
  • 使用双引号进行检索时,仅需转义 " \ 。​
  • 使用单引号进行检索时,仅需转义 ' \ * ?。​
__path__:\/images\/log​
​
检索语句参考​
说明​
不同的索引配置,会有不同的检索结果。​
常用检索语句​
​
场景​
语句​
查询包含关键词 ERROR 的日志。​
ERROR​
查询包含 level 字段的日志。​
level:*​
查询不包含 level 字段的日志。​
NOT level:*​
查询 level 字段值不为空的日志。​
NOT level:""​
查询 level 字段值为空的日志。​
level:""​
查询 level 字段值不为null的日志。​
NOT level:"null"​
查询来源为指定 IP 的某台机器或某些机器的日志。​
__source__:192.168.10.10 或 __source__:192.168.10.*​
查询日志采集路径为特定名字的某个文件或某些文件的日志。​
__path__:"/var/log/access.log"或__path__:\/var\/log\/*.log​
查询状态码为 4xx 的访问日志。​
status:[400 TO 500}​
查询状态码大于 400,即访问失败的日志。​
status:>400​
在 GET 请求的访问日志中,查询请求失败的日志。​
method:GET AND status:>400​
查询异常日志,即级别非 INFO 的日志。​
NOT level:INFO​
查询 ERROR 或 WARNING 级别的日志。​
level:ERROR OR level:WARNING​
查询指定机器上的异常日志,即来源为指定 IP 地址、级别非 INFO 的日志。​
__source__:192.168.10.10 NOT level:INFO​
来源为指定 IP 地址、级别为 ERROR 或 WARNING 的日志。​
__source__:192.168.10.10 AND (level:ERROR OR level:WARNING)​
查询指定机器上指定文件中的异常日志,即来源为指定 IP 地址、路径为指定文件、级别非 INFO 的日志。​
(__source__:192.168.10.10 AND __path__:\/var\/log\/access.log) NOT level:INFO​
通过预留字段 __pod_name__ 查询指定 Pod 名称的日志。​
__pod_name__:nginx​
查询 Pod 名称为 application,且请求延时大于 3s 的日志。​
__pod_name__:application AND request_time:>3​
查询包含字段名为 ProjectID,字段值以 6d 开头,以 67 结尾的日志。​
ProjectID:6d*67​
查询包含关键词 not 的日志。​
"not"​
说明​
not 默认为日志服务检索运算符,当 not 为普通的检索字符串时,需使用双引号("")包裹。​
​
基于分词符的检索​
如果您在创建索引时开启了分词符功能,则日志服务会基于分词符,将日志内容拆分成多个关键词,您可以搜索各个关键词进行日志检索。日志服务支持的分词符包括 !@#%^&*"()-_=', <>/?|;:\n\t\r[]{}\。​
例如 region 字段值为 cn-guilin,并为该字段配置了键值索引。​
  • 当您未开启分词符时,cn-guilin为一个整体,您使用guilin检索语句将检索不到该日志。​
  • 当您设置分词符为 !@#%^&*"()-_=', <>/?|;:\n\t\r[]{}\ 时,cn-guilin将被拆分为 cn、guilin。您可以使用如下语句进行日志检索。​
  • ​
    场景​
    检索语句​
    查询 region 字段的值中包含guilin的日志。​
    region:guilin​
    查询 region 字段的值中包含cn、guilin的日志。​
    region:"cn guilin"​
    查询包含以 gu 开头的词的日志。​
    gu*​
    ​
短语查询​
使用短语查询可以精准匹配指定的短语,详细说明请参考短语查询检索日志。​
​
场景​
检索语句​
查询 URL 字段的值中包含 ShardId=7 的日志。​
URL:#"ShardId=7"​
​
预留字段查询​
​
预留字段​
说明​
示例​
__source__​
筛选来源为指定 IP 地址的日志。支持通过通配符进行模糊查询。​
__source__:127.0.0.*​
__path__​
筛选来源为指定路径下文件的日志。支持通过通配符进行模糊查询。​
__path__:\/var\/log\/messages​
__time__​
通过日志中的 __time__ 字段筛选日志,支持范围查询。​
__time__:[1524952304123 TO 1724958207123]​
​
检索示例​
本示例从全文检索、键值检索、精确查询、模糊查询、短语查询、SQL LIKE 查询等维度演示检索语法的使用。​
原始日志​
​
Action:ConsumeLogs​
Host:t.ivolces.com​
UID:210006​
ReqID:f118a5b781​
ReqSize:51​
ReqTime:16​
RespSize:1​
Method:GET​
status:200​
URL:/ConsumeKafkaLogs?ShardId=5&TopicId=d6cb02b5-1cd1-4265-9b8b-83b7​
level:error​
error:Too many requests in a short period of time, please slow down.​
​
配置索引​
不同的索引配置,会产生不同的检索分析结果。同时创建全文索引和检索索引后,以键值索引的配置为准。​
​​​
检索语句​
模糊查询​
​
分类​
场景​
检索语句和结果​
基础模糊查询​
查询包含以 Consume 开头的关键字的相关日志。​
  • 检索语句​
  • ​
    Consume*​
    ​
  • 检索结果​
  • 返回包含 ConsumeOriginalLogs、ConsumeKafkaLogs、ConsumerHeartbeat 等关键词的日志。​
  • ​​​
基于 SQL LIKE 语法的模糊检索​
查询 host 字段中包含字符串 ivolces 的日志。​
  • 检索语句​
  • ​
    * | SELECT * WHERE Host LIKE '%ivolces%'​
    ​
  • 检索结果​
  • ​​​
​
精确查询​
​
分类​
场景​
检索语句和结果​
基础精确查询​
查询包含关键词 ConsumeLogs 的相关日志。​
  • 检索语句​
  • ​
    ConsumeLogs​
    ​
  • 检索结果​
  • 返回包含 ConsumeLogs 关键字的日志。​
  • ​​​
​
查询 URL 字段中包含 ConsumeLogs 的日志。​
  • 检索语句​
  • ​
    URL:ConsumeLogs​
    ​
  • 检索结果​
  • 返回 URL 字段中包含 ConsumeLogs 关键字的日志。​
  • ​​​
​
查询 ConsumeLogs?ShardId=5 的相关日志。​
在本示例中,问号(?)、等号(=)为分词符,因此日志服务会将 ConsumeLogs?ShardId=5 拆分 ConsumeLogs、ShardId、5 并进行查询。如果您需要精准匹配短语 ConsumeLogs?ShardId=5,可参考下面的短语查询和 SQL LIKE 查询。​
  • 检索语句​
  • ​
    "ConsumeLogs?ShardId=5"​
    ​
  • 检索结果​
  • 返回所有同时包含 ConsumeLogs、ShardId、5 的日志。​
  • ​​​
短语查询​
精准查询短语 ConsumeLogs?ShardId=5 相关的日志。​
精准匹配ConsumeLogs?ShardId=5,可以使用短语查询或者基于 SQL LIKE 语法的精确检索。​
  • 检索语句​
  • ​
    #"ConsumeLogs?ShardId=5"​
    ​
  • 检索结果​
  • 精确匹配到短语 ConsumeLogs?ShardId=5 的相关日志。​
  • ​​​
基于 SQL LIKE 语法的精确检索​
精准查询 URL 字段中包含 ConsumeLogs?ShardId=5 的相关日志。​
  • 检索语句​
  • ​
    * | SELECT * WHERE URL LIKE '%ConsumeLogs?ShardId=5%'​
    ​
  • 检索结果​
  • 精确匹配到短语 ConsumeLogs?ShardId=5 的相关日志。​
  • ​​​
​
  • ​
​
最近更新时间:2026.09.07 18:11:37
这个页面对您有帮助吗?
有用
有用
无用
无用