在日志服务数据加工函数中,字符串语法用于指定检索规则和数据过滤的方式。本文档介绍数据加工函数中的查询字符串语法通用规则。
在使用以下数据加工函数时,您可以通过查询字符串语法过滤数据。
类型 | 函数 | 场景 |
---|---|---|
事件检查函数 | 使用查询字符串判断指定事件的字段值是否满足指定的条件。 |
查询字符串语法支持检索关键词、模糊匹配等功能,键值检索和全文检索模式对不同搜索功能的支持情况如下表所示。
功能 | 键值检索 | 全文搜索 |
---|---|---|
关键词检索 | 支持 | 支持 |
模糊匹配 | 支持 | 支持 |
完全匹配 | 支持 | 不支持 |
正则表达式匹配 | 支持 | 不支持 |
数值比较与范围判断 | 支持 | 不支持 |
逻辑关系判断 | 支持 | 支持 |
字段判断 | 支持 | 不支持 |
在字符串查询语法中,需要对一些特殊字符进行转义操作。需要转义的特殊字符包括星号(*
)、冒号(:
)、括号(()
)、单引号(''
)、双引号(""
)、问号(?
)、波浪号(~
)等。转义的方式包括:
转义方式 | 说明 |
---|---|
字段名转义 | 字段名包含特殊字符时应使用反斜线( |
搜索值转义 | 搜索值如果包含特殊字符,应使用反斜线( |
检索方式 | 说明 |
---|---|
全文检索 | 在所有字段值中搜索指定字符串。搜索中文关键词时需要加引号("")。
示例如下:
|
键值检索 | 在某个字段的所有值中搜索指定字符串。
示例如下:
|
查询字符串语法支持模糊匹配,即通过通配符进行匹配。目前支持的通配符包括:
*
):零个或多个字符串。?
):一个字符,或一个中文字符等宽字符。模糊匹配的语法如下:
检索方式 | 说明 |
---|---|
全文检索 | 在所有字段中进行模糊匹配。
示例如下:
|
键值检索 | 在指定字段的字段值中进行模糊匹配。
示例如下:
|
查询字符串语法支持完全匹配,即字段值从开始到结尾应和指定字符串完全匹配。
语法格式:
f_search('key==value')
示例: f_search('company== "byte dance"')
:company
字段的值应完全等于 byte dance
。
查询字符串语法支持正则表达式匹配,即通过正则表达式匹配指定字段的字段值。
语法格式:
f_search('key~=正则表达式')
语法说明:
\
),应使用双引号包裹。^
和$
,例如^\d+$
。示例:
f_search('path~= "\d+"')
:path 字段值中包含数字。f_search('id~= "^\d+$"')
:id 字段值为数字格式。查询字符串语法支持数值比较和数值范围判断。支持的对比符包括 >
、>=
、=
、<
、<=
。
功能 | 说明 |
---|---|
数值比较 | 将指定字段的值和某个数值进行大小对比。
|
数据范围判断 | 将指定字段的值和某个数值范围进行对比。数值范围应为闭区间。
|
对多个搜索结果进行逻辑关系判断,支持通过圆括号()
调整逻辑关系的对比顺序。
逻辑关系 | 关键字 |
---|---|
且 |
|
或 |
|
否 |
|
示例如下:
f_search('byte OR dance') # 逻辑关系运算符应为大写 f_search('byte AND (dancer OR dance)') f_search('byte AND ( NOT dancer OR tiktok)') f_search("byte && dance") # AND f_search("byte || dance") # OR f_search("byte || !dance") # OR NOT
使用搜索字符串对字段进行判断。
示例如下:
f_search('field:*')
:判断字段 field
存在。f_search('NOT field:*')
:判断字段 field
不存在。f_search('field~=".+"')
:判断字段 field
存在。f_search('NOT field~=".+"')
:判断字段 field
不存在。