搜索语法
云日志服务LTS提供一套搜索语法用于设置搜索条件,帮助您更有效地搜索日志。
查询语句用来指定日志查询时的过滤规则,返回符合条件的日志。根据索引配置方式可分为全文查询和字段查询,根据查询精确程度可分为精确查询和模糊查询。详细请参考表1。
使用SQL语句进行查询时,建议SQL语句中的字段名或别名使用半角符(``),例如:select `filed1.a` as `别名` from log。
查询方式 |
说明 |
示例 |
---|---|---|
全文查询 |
配置全文索引后,日志服务根据您设置的分词符将整条日志拆分成多个词。您可以指定关键字(字段名、字段值)和查询规则进行查询。 |
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个词,并返回包含这些词的日志。 |
运算符
查询语句支持如下运算符。
运算符 |
说明 |
---|---|
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)。例如:
|
"" |
使用双引号("")包裹一个语法关键词,可以将该语法关键词转换成普通字符。例如"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]。 |
#"" |
用于搜索包含目标短语的日志,可以保证关键词出现的顺序。
说明:
短语搜索中的星号(*)和问号(?)会被视为普通字符,因此短语搜索不支持模糊搜索,可以用来搜索日志中的星号(*)和问号(?)。 |