查询语法介绍和相关示例 您所在的位置:网站首页 分词英语简写怎么写 查询语法介绍和相关示例

查询语法介绍和相关示例

2024-07-18 02:10| 来源: 网络整理| 查看: 265

查询语法结构基础语法

查询语句和分析语句以竖线(|)分割。查询语句可单独使用,分析语句必须与查询语句一起使用。即分析功能是基于查询结果或全量数据进行的。

重要

分析语句中不需要填写FROM子句和WHERE子句,默认分析当前Logstore中的数据。

不需要在分析语句末尾加分号表示结束。

分析语句中不区分大小写。

基本语法

查询语句|分析语句

语句类型

说明

查询语句

查询条件,可以为关键词、数值、数值范围、空格、星号(*)等。

如果为空格或星号(*),表示无过滤条件。更多信息,请参见查询语法。

分析语句

对查询结果或全量数据进行计算和统计。

示例

* | SELECT status, count(*) AS PV GROUP BY status语句编写流程image

查询语句的编写流程为:首先根据查询方式确定查询语法,然后根据字段类型选择合适的运算符,最后确定匹配模式。

步骤一:确定查询方式重要

如果需要对某个字段进行分析(SELECT语句),必须创建字段索引。创建字段索引和全文索引的步骤,请参见文档创建索引。

不同的索引配置,会产生不同的查询和分析结果,如果同时创建了全文索引和字段索引,以字段索引的配置为准。

只创建全文索引:只能使用全文查询语法。

已创建字段索引:

double、long类型:只能根据字段查询语法进行查询。

text类型:如您知晓关键词属于某个已创建索引的text类型字段,建议使用字段查询语法。如果不确定关键词的具体字段,请使用全文查询语法:

没有创建全文索引,全文查询语法仅在字段索引是text类型的字段中查询。

如果已创建全文索引,全文查询语法会从所有text类型索引中查询。

全文查询语法

全文查询不针对具体的字段进行查询,其查询语法为:

keywords1 [ [ and | or | not ] keywords2 ] ...

keywords1 是需要查询的关键词,可以使用 *、?进行模糊匹配,也可以结合运算符如 andor 等联合其他查询条件一起查询。

案例1:希望查询关键词为 Nginx 相关的日志。则查询语法:Nginx

案例2:查询关键词为 NginxTomcat 相关的日志。则查询语法:Nginx or Tomcat

字段查询语法

字段查询对应的字段类型包含text、long、double、JSON,且针对具体的字段进行查询,其查询语法为:

indexname1 [ : | > | >= | < | 、>=、 500

步骤二:确定字段类型字段类型

编写查询语句时需要考虑字段类型的特点,合理使用运算符,快速、精准地锁定目标日志。

说明

开启全文索引后,日志服务默认将整条日志(除__time__以外所有字段)设置为text类型。

开启字段索引后,索引字段日志服务支持四种类型:text类型、JSON类型、long或double类型。

字段类型

介绍

可用运算符

text类型

字符串类型的字段。开启全文索引后,日志服务默认将整条日志(除__time__以外所有字段)设置为text类型。

and、or、not、()、:、""、\、*、?。

long或double类型

只有设置字段的数据类型为long或double后,才能通过数值范围查询该字段的值。

如果字段的数据类型不被设置为double、long或者查询时数值范围的语法错误,那么日志服务会按照全文查询方式进行查询,这样查询到的结果可能与您期望的结果不同。例如字段owner_id不是double、long类型,则执行查询语句owner_id>100时,会返回同时包含owner_id、>(非分词符)、100这三个词的日志。

如果将字段的类型从text类型改成double、long类型,则只支持等号(=)查询。如果需要使用范围查询、大于号(>)、小于号(、>=、100。

>=

查询某字段值大于或等于某数值的日志。例如request_time>=100。

-1000000000

调试

查询包含and的日志。

"and"说明

此处的and为普通字符串,不代表运算符。

调试

查询request method字段值是PUT的日志。

"request method":PUT重要

字段名request method中存在空格,在查询时需使用双引号("")包裹。

查询日志主题为HTTPS或HTTP的日志。

__topic__:HTTPS or __topic__:HTTP

查询采集于192.0.2.1主机的日志。

__tag__:__client_ip__:192.0.2.1

此处的__tag__:__client_ip__为日志服务保留字段,表示日志所在主机的IP地址。更多信息,请参见保留字段。

重要

通过数据加工或者Logtail插件处理的日志,其tag中的key会被转换成普通key,即查询时需使用双引号("")包裹字段名,例如"__tag__:__client_ip__":192.0.2.1。

查询包含192.168.XX.XX的日志。

* | select * from log where key like '192.168.%.%'

更多信息,请参见通过SQL的like语法进行精确的模糊查询。

查询remote_user字段值不为空的日志。

not remote_user:""

调试

查询remote_user字段值为空的日志。

remote_user:""

调试

查询remote_user字段值不为null的日志。

not remote_user:"null"

调试

查询不存在remote_user字段的日志。

not remote_user:*

调试

查询存在remote_user字段的日志。

remote_user:*

调试

查询城市字段值不为上海的日志。

not 城市:上海说明

当您要查询中文字符串时,您需要在配置索引时,打开包含中文开关。更多信息,请参见创建索引。

进阶查询示例

模糊查询

查询需求

查询语句

调试

查询包含以cn开头的词的日志。

cn*

调试

查询region字段值是以cn开头的日志。

region:cn*

查询region字段值包含cn*的日志。

region:"cn*"说明

此处的cn*为一个独立词。例如:

如果日志内容为region:cn*,en,分词符为半角逗号(,),则该日志内容被拆分为region、cn*和en,您可以通过上述语句查询到该日志。

如果日志内容为region:cn*hangzhou,则cn*hangzhou为一个整体,您执行上述语句无法查询到该日志。

查询包含以mozi开头,以la结尾,中间还有一个字符的词的日志。

mozi?la

调试

查询包含以mo开头,以la结尾,中间包含零个、单个或多个字符的词的日志。

mo*la

调试

查询包含以moz开头的词和以sa开头的词的日志。

moz* and sa*

调试

查询region字段值以hai结尾的所有日志。

目前使用查询语句无法查询到对应的日志,您可以使用SQL分析中的Like语法进行查询。更多信息,请参见通过SQL的like语法进行精确的模糊查询。

* | select * from log where region like '%hai'

基于分词符的查询

日志服务会根据分词符,将日志内容拆分成多个词。日志服务默认配置的分词符为, '";=()[]{}?@&/:\n\t\r。如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。如何设置分词符,请参见创建索引。

例如http_user_agent字段值为Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2。

设置分词符为空时,该字段值将被当成一个整体,则您使用http_user_agent:Chrome查询语句进行查询时,无法查询到日志。

设置分词符为, '";=()[]{}?@&/:\n\t\r后,该字段值为拆分为Mozilla、5.0、Windows、NT、6.1、AppleWebKit、537.2、KHTML、like、Gecko、Chrome、192.0.2.0、Safari、537.2。您可以使用http_user_agent:Chrome等查询语句进行查询。

说明

当查询关键字中包含分词符时,您可以使用短语查询或者Like语法。例如:

短语查询:#"redo_index/1"。更多信息,请参见短语查询。

Like语法:* | select * from log where key like 'redo_index/1'。

查询需求

查询语句

调试

查询http_user_agent字段值中包含Chrome的日志。

http_user_agent:Chrome

调试

查询http_user_agent字段值中包含Linux和Chrome的日志。

http_user_agent:Linux and http_user_agent:Chrome

调试

http_user_agent:"Linux Chrome"

调试

查询http_user_agent字段值中包含Firefox或Chrome的日志。

http_user_agent:Firefox or http_user_agent:Chrome

调试

查询request_uri字段值包含/request/path-2的日志。

request_uri:/request/path-2

调试

查询request_uri字段值以/request开头,但不包含/file-0的日志。

request_uri:/request* not request_uri:/file-0

调试

完全匹配包含短语redo_index/1的日志。

#"redo_index/1"

* | select * from log where key like 'redo_index/1'

说明

通过短语查询或者Like语法,可完全匹配目标短语。使用普通的精确查询,将匹配redo_index、1等词。

特殊场景查询示例在查询语句中

当字段名或字段值中存在特殊字符(空格、中文、冒号(:)、连字符(-)等)、语法关键词(and、or等)等内容时,需要使用双引号("")包裹。

日志服务保留以下运算符的使用权,如果您需要使用以下运算符作为查询关键字,请使用""(双引号)包裹:sort、asc、desc、group by、avg、sum、min、max和limit。

通过数据加工或者Logtail插件处理的日志,其tag中的key会被转换成普通key,即查询时需使用双引号("")包裹字段名,例如"__tag__:__client_ip__":192.0.2.1,此处的__tag__:__client_ip__为日志服务保留字段,表示日志所在主机的IP地址。更多信息,请参见保留字段。

查询需求

查询语句

调试

查询request method字段值中包含PUT的日志。字段名request method中存在空格。

"request method":PUT

查询采集于192.0.2.1主机的日志。

"__tag__:__client_ip__":192.0.2.1

在分析语句中

当字段名、表名等专有名词中存在特殊字符(空格、中文、冒号(:)、连字符(-)等)、语法关键词(and、or等)等内容时,需要使用双引号("")包裹。

表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status或"status"表示日志字段status。

查询需求

查询语句

调试

查询包含192.168.XX.XX的日志。

* | select * from log where key like '192.168.%.%'

在查询中使用引号,请参见如何在查询和分析语句中使用引号?。

相关文档

如何在查询和分析语句中使用引号?

分析函数和语法,请参见分析函数和语法。

优化查询的方法

错误排查

日志查询常见问题

查询与分析日志的常见报错

日志查询示例

如何精确的按照时间排序查询日志

查询和分析网站日志

分析负载均衡7层访问日志

查询JSON日志(字段值为JSON对象、JSON数组)的查询和分析的示例,请参见查询和分析JSON日志和查询和分析JSON日志的常见问题。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有