全部產品
Search
文件中心

Simple Log Service:如何模糊查詢日誌?

更新時間:Aug 27, 2026

本文介紹不同方式的模糊查詢。

通過查詢文法進行模糊查詢

查詢原理

  1. Log Service查詢與模糊比對條件一致的前100個詞。

  2. 使用這前100個詞去匹配日誌記錄中的內容,並返回包含這些詞的日誌條目。

因為只查詢模糊條件命中的前100個詞,所以當模糊條件首碼很短且日誌中超過100個詞時,查詢結果會不精確。如果再結合not語句,會發現某些查詢條件未被過濾。例如執行not abcd*查詢語句,在結果中出現以abcd開頭的詞。

用法

在Log Service查詢文法中,星號(*)代表多個任一字元的詞,問號(?)代表單個字元的詞。例如:abc*代表查詢以abc開頭的詞。ab?d代表查詢以ab開頭、d結尾且中間包含單個字元的詞, 詳情請參見查詢文法與功能

萬用字元 * 和 ? 在單個詞元(token)範圍內匹配,不跨分詞符邊界。日誌經分詞符切分為詞元後,* 和 ? 僅匹配詞元內的字元。當日誌內容含未被分詞符切分的字元(如底線 _)時,詞元邊界可能與預期不同。例如日誌含 ERR_MSG(底線非分詞符,ERR_MSG 為完整詞元),查詢 ERR 無法匹配,查詢 ERR* 可匹配。

通過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中的某個字元的詞。