更新时间:2024-05-09 GMT+08:00
分享

搜索语法

云日志服务LTS提供一套搜索语法用于设置搜索条件,帮助您更有效地搜索日志。

查询语句用来指定日志查询时的过滤规则,返回符合条件的日志。根据索引配置方式可分为全文查询和字段查询,根据查询精确程度可分为精确查询和模糊查询。详细请参考表1

SQL是用于访问和处理数据库的标准计算机语言。管道符提供了使用SQL语句进行数据分析的能力,具体请参考SQL92语法标准。

使用SQL语句进行查询时,建议SQL语句中的字段名或别名使用半角符(``),例如:select `filed1.a` as `别名` from log。

表1 查询方式

查询方式

说明

示例

全文查询

配置全文索引后,日志服务根据您设置的分词符将整条日志拆分成多个词。您可以指定关键字(字段名、字段值)和查询规则进行查询。

hello and world表示查询同时包含关键字hello和world的日志。

字段查询

配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询。根据字段索引中设置的数据类型,您可以进行多种类型的基础查询和组合查询。

time>60 and region:r*表示查询time字段值大于60且region字段值以r开头的日志。

精确查询

使用完整的词进行查询。日志服务查询采用的是分词法,精确查询时并不能完全匹配关键词。例如查询语句为abc def,查询结果将包含所有abc和def的日志,无法完全匹配目标短语。如果您要完全匹配短语abc def,可以使用短语查询。更多信息,请参见短语查询、如何精准查询日志。

region:r1表示查询region字段值精确匹配r1的日志。

模糊查询

在查询语句中指定一个64个字符以内的词,在词的中间或者末尾加上模糊查询关键字,即星号(*)或问号(?),日志服务会在所有日志中为您查询到符合条件的100个词,返回包含这100个词并满足查询条件的所有日志。指定的词越精确,查询结果越精确。

my*表示在所有日志中查找以my开头的100个词,并返回包含这些词的日志。

运算符

查询语句支持如下运算符

表2 运算符

运算符

说明

and

and运算符。例如request_method:GET and status:200。

AND

与运算符,等同于and。

or

or运算符。例如request_method:GET or status:200。

OR

或运算符,等同于or。

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。

说明:

如果字段名称(key)或者字段值(value)内有空格或冒号(:)等保留字符,请使用双引号("")包裹字段名称(key)或者字段值(value)。例如:

  • "request method":GET
  • message:"This is a log"
  • time:"09:00:00"
  • ipv6:"2024:AC8:2ac::d09"

""

使用双引号("")包裹一个语法关键词,可以将该语法关键词转换成普通字符。例如"and"表示查询包含and的日志,此处的and不代表运算符。在字段查询中双引号("")内的所有词被当成一个整体。

\

转义符号,用于转义双引号(""),转义后的引号表示符号本身。例如日志内容为instance_id:nginx"01",您可以使用instance_id:nginx\"01\"进行查询。

说明:

转义双引号\"在搜索语句中必须成对出现。例如支持使用fieldName : "\"error\""或fieldName:"\\",不支持使用fieldName : "error\""或者fieldName : "error\"

*

通配符查询,匹配零个、单个、多个字符。例如host:aliyund*c。

?

通配符查询,匹配单个字符。例如host:aliyund?c。

>

查询某字段值大于某数值的日志。例如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]。

#""

用于搜索包含目标短语的日志,可以保证关键词出现的顺序。

说明:

短语搜索中的星号(*)和问号(?)会被视为普通字符,因此短语搜索不支持模糊搜索,可以用来搜索日志中的星号(*)和问号(?)。

分享:

    相关文档

    相关产品