全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

搜索型日志池查询语法

最近更新时间:2026-03-25 16:24:40

本文介绍适用于搜索型日志池Lucene语法SQL语法


Lucene语法

检索规则

在进行日志搜索前,需先选择日志池、时间范围,以及在输入框中输入检索语句。产品支持全文检索、键值检索和模糊关键字检索。

全文检索

日志服务会根据分词符将每条日志数据拆分为多个词组,以支持您根据特定的关键字来检索日志。全文检索支持普通查询、短语查询和模糊查询。

  • 普通查询

直接输入关键字,或者指定字段和关键字,将返回符合关键字的数据结果。

例如 method:GET and status=200 表示查询 method 是 GET 并且 status 等于 200 的日志。

  • 短语查询

如果需要查询的关键字中包含检索语法运算符或空格,可以将关键字用双引号("")包裹,表示将双引号中的内容作为多个关键字查询。

例如 msg:“not avaliable” 表示 msg 查询包含关键字 not 和 avaliable 的日志,等价于查询 msg:service and msg:“not” and msg:avaliable。

  • 模糊查询

支持关键字中间或末尾加上模糊查询字符( * 和 ?)。例如 http_user:andr? 表示在所有日志中查找 http_user字段包含以 andr 开头的词的日志。

键值检索

用户可以指定字段名称和字段内容进行查询。对于double和long类型的字段,可以指定数值范围进行查询。例如查询语句为count>5000 AND Status:200,表示查询count值大于5000且Status字段值为200的日志。

运算符语法

语法

语义

示例

key:value

键值搜索格式,默认开启所有字段的索引,其中 value 支持?、*模糊搜索

level:INFO

A AND B

“与”逻辑,返回 A 与 B 的交集结果

level:INFO AND line:165

A OR B

“或”逻辑,返回 A 或 B 的并集结果,如果多个单词间没有语法关键词,默认是 OR 的关系

line:171 OR line:165 或者 line:(171 OR 165)

匹配单个字符,用于替代单个字符

line:15?

*

匹配0到多个字符

line:1*

TO

range 用法,如status:[400 TO 499],或status:[400 TO 499} '}'为不包含499

timestamp:[0 TO 1640171559877]

>

返回字段下大于某个数值的日志

line:>158

>=

返回字段大于或等于某个数值的日志

line:>=158

<

返回字段小于某个数值的日志

line:<158

<=

返回字段小于或等于某个数值的日志

line:<=158

=

多用于返回字段等于某个数值的日志

line=158

!a:b

返回a字段不包含b的数据

!msg:开始


SQL语法

语法支持

日志服务支持基础的 SELECT 查询,具体查询语法如下。

    select_expr [, select_expr] ...
    [WHERE where_condition]
    [GROUP BY {col_name | expr}, ... ]
    [ORDER BY {col_name | expr} [ASC | DESC], ...]
    [LIMIT [offset,] row_count]

下面是一个查询语句示例。

    SELECT id,sum(cost) AS result 
    WHERE price>500 
    GROUP BY id

说明:SQL查询语法使用限制详见使用限制

运算符

比较函数

运算符

含义

<

小于

>

大于

<=

小于或等于

>=

大于或等于

=

等于

<>

不等于

BETWEEN

查询处于两个参数之间的数据

IS NULL or IS NOT NULL

判断参数是否是Null值

逻辑运算函数

运算符

含义

AND

只有左右运算数都是true时,结果才为true

OR

左右运算数任一个为true,结果为true

NOT

右侧运算数为false时,结果才为true

真值表

a

b

a AND b

a OR b

TRUE

TRUE

TRUE

TRUE

TRUE

FALSE

FALSE

TRUE

TRUE

NULL

NULL

TRUE

FALSE

TRUE

FALSE

TRUE

FALSE

FALSE

FALSE

FALSE

FALSE

NULL

FALSE

NULL

NULL

TRUE

NULL

TRUE

NULL

FALSE

FALSE

NULL

数学计算函数

运算符

含义

+

两个参数相加

-

两个参数相减

*

两个参数相乘

/

两个参数相除求整数

%

两个参数相除求余数

log10(x)

返回以10为底,x的对数

round(x)

x四舍五入

聚合函数

运算符

含义

示例

avg(x)

计算x列的算数平均值

select avg(request_time) as avg_times

count(*)

表示所有的行数

select count(*) where method = GET

max(x)

返回最大值

select max(request_time) as max_times

min(x)

返回最小值

select min(request_time) as min_times

sum(x)

返回x列的和

select sum(request_time) as sum_times

stats(x)

返回x列的聚合计算结果,包括avg、max、min、sum等

-

date_histogram

根据指定间隔获取所有匹配的值

select data_histogram(timestamp) where status_code=200

percentiles

指定分位符

select percentiles(age,10,20,30)

其他函数

运算符

含义

示例

floor

返回小于或等于指定数值表达式的最大整数,向下取整

select floor(num) as nt

log

返回x的自然对数,x相对于基数e的对数

-

log10

返回x的基数为10的对数

-

round

返回数字表达式并四舍五入为指定的长度或精度

-

sqrt

用来求给定值的平方根

-

+

加运算

-

-

减运算

-

*

乘运算

-

/

除运算

-

date_format

用于以不同的格式显示日期或时间数据

-

if

用于条件判断

select name, if(age <= 18, ‘Y’, ‘O’) as myGender

percentile_ranks

计算当前值按百分比计算所处在百分位位置

select percentile_ranks(age, 3, 8, 12, alias=rankAge)

查询语法示例

查询说明

示例

术语聚合

SELECT COUNT(*) GROUP BY gender

范围聚合

SELECT COUNT (age) GROUP BY range(age, 20 , 25 , 30 , 35 , 40 )

日期直方图聚合

select count(*) group by date_histogram('field'='timestamp','interval'='1m','format'='yyyy-MM-dd HH:mm','alias'='yourAlias','time_zone'='+08:00')

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈