本文介绍不同方式的模糊查询。
通过查询语法进行模糊查询
查询原理
日志服务查询与模糊匹配条件一致的前100个词。
使用这前100个词去匹配日志记录中的内容,并返回包含这些词的日志条目。
因为只查询模糊条件命中的前100个词,所以当模糊条件前缀很短且日志中超过100个词时,查询结果会不精确。如果再结合not语句,会发现某些查询条件未被过滤。例如执行not abcd*
查询语句,在结果中出现以abcd开头的词。
用法
在日志服务查询语法中,星号(*)代表多个任意字符的词,问号(?)代表单个字符的词。例如:abc*
代表查询以abc开头的词。ab?d
代表查询以ab开头、d结尾且中间包含单个字符的词, 详情请参见查询语法。
通过SQL的like语法进行精确的模糊查询
like语法满足标准的SQL like语法,在like语法中百分号(%)代表任意个字符。下划线 (_)代表单个字符。
示例:查询key满足abcd开头的所有日志,对应的查询分析语句如下所示。
* | select * from log where key like 'abcd%'
查询key不是以abcd开头的所有日志
* | select * from log where key not like 'abcd%'
通过SQL的正则式函数进行模糊查询
通过正则式函数,可以在一个正则式中查询多个词。并且正则式的表达语义比like语法更强大,可以搜索满足数字的词以及满足特定字符的词等,详情请参见正则式函数。
示例:
* | select * from log where regexp_like(key, abc*)
表示查询以abc开头的词。* | select * from log where regexp_like(key, abc\d+)
表示查询以abc开头且后面跟着数字的词。* | select * from log where regexp_like(key, abc[xyz])
表示查询以abc开头且后面跟着xyz中的某个字符的词。
文档内容是否对您有帮助?