本文介紹短語查詢的文法、使用限制和樣本。
概述
Log Service查詢採用的是分詞法,短語查詢匹配的是分詞後的詞元序列及其相鄰位置,不是對原始字串做逐字元匹配。例如查詢語句為abc def,將匹配所有包含abc和def的日誌,不區分先後順序,無法精準匹配目標短語。現在Log Service推出短語查詢,用於精準匹配一段短語。
如果短語中的標點符號屬於當前索引配置的分詞符,這些標點僅用於切分詞元,不作為短語匹配內容。例如逗號#"aa,bb"、方括弧#"[aa bb]"和空格#",aa bb,"均為分詞符時,會被解析為相同的詞元序列 aa、bb,因此查詢結果一致。若相關標點未配置為分詞符,或欄位使用了不同的分詞配置,則查詢結果可能不同。
Log Service接收到短語查詢請求後,執行流程主要分為如下兩步:
先執行對應的非短語查詢語句進行日誌查詢。例如執行
#"abc def"語句,實際先執行"abc def"語句。說明為避免查詢量太大,目前執行短語查詢時,限制步驟1最多返回10,000條結果。
在上述查詢結果中再挑選符合短語查詢條件的日誌,並返回最終的查詢結果。
文法
SLS Query Skill 智能查詢分析日誌:Log Service提供了Agent Skill,支援在本地 AI Agent 中通過自然語言查詢和分析 SLS 日誌資料。
欄位查詢
key:#"abc def"全文檢索查詢
#"abc def"
使用限制
短語查詢的結果只支援向前、向後的連續翻頁,不支援隨機跳轉。
執行短語查詢後,日誌分布長條圖展示的是非短語查詢的結果。
短語查詢不支援搭配模糊查詢。
短語查詢語句中必須添加半形雙引號("")。
短語查詢語句中不支援搭配not語句,即不支援
not #"abc def"。短語查詢語句中不支援搭配分析語句,即不支援
#"abc" | select ***。因此使用短語查詢時,也不支援快速分析功能。
翻頁說明
當您執行一次翻頁操作時,Log Service會對應執行一次短語查詢操作,用於保證查詢結果的連續性。
短語查詢每次最多查詢10,000條日誌,在翻頁過程中,可能出現某頁中顯示的日誌數量少於每頁顯示對應的數量,但仍支援向後翻頁。即表示當前查詢的10,000條日誌中,滿足短語查詢條件的日誌數量少於每頁顯示對應的數量。
例如日誌總數為20,000條,每頁支援顯示100條,當您執行一次短語查詢後,只返回89條且向後翻頁功能可用,此時說明前10,000條日誌中只有89條日誌滿足短語查詢條件。您可以執行翻頁操作,Log Service會自動在後10,000條日誌中,執行第二次短語查詢,並返回合格日誌。
樣本
例如您要查詢包含
redo_index/1的日誌。使用非短語查詢語句
"redo_index/1",Log Service將根據全文索引匹配部分關鍵詞。在搜尋欄中直接輸入redo_index/1進行非短語查詢時,Log Service會按分詞符/拆分查詢詞,匹配到包含redo_index和1等詞元的日誌條目(如路徑/redo_index/318/.../1/...、/redo_index/14912/.../1/...),返回大量非精確匹配結果。使用短語查詢語句
#"redo_index/1",Log Service將匹配完整的短語redo_index/1。使用短語查詢語句#"redo_index/1",Log Service精確匹配包含完整字串redo_index/1的日誌記錄,查詢結果中日誌條目的檔案路徑欄位包含/redo_index/1/完整片段,表明短語查詢未對該字串進行分詞拆分。
例如您要查詢包含
02/Mar的日誌(調試)。使用非短語查詢語句time_local: 02/Mar,Log Service將根據全文索引匹配部分關鍵詞。
查詢結果中包含
time_local值為01/Mar/2025:15:02:56的日誌條目。該條目的日期實際為01/Mar而非02/Mar,但因為時間部分15:02:56中包含關鍵詞02,且日期部分包含關鍵詞Mar,兩個關鍵詞被分別匹配命中,因此該條目也被返回。使用短語查詢語句
time_local: #"02/Mar",Log Service將匹配完整的短語02/Mar。查詢結果顯示匹配到的日誌中
time_local欄位值為02/Mar/2025:23:59:56,其中包含完整短語02/Mar,符合匹配預期。