本文介紹不同方式的模糊查詢。
通過查詢語法進行模糊查詢
查詢原理
日志服務查詢與模糊匹配條件一致的前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中的某個字符的詞。
文檔內容是否對您有幫助?