Log Service掃描(Scan)查詢功能支援免配置索引進行目標欄位的掃描,用於查詢相關日誌,並且支援通過SPL語句對查詢結果進行進一步的過濾、轉換、解析等操作。本文介紹掃描查詢功能的相關資訊。
背景資訊
Log Service基於索引技術,提供快速查詢日誌功能,但在某些情境下可能會遇到如下限制,無法建立或使用索引。
為降低使用費用,而未對某些欄位建立索引,但臨時急需查詢歷史日誌。
欄位值長度超過了索引限制,超出部分無法被查詢。
欄位名較多,事先無法擷取具體的欄位名,無法建立欄位索引。
欄位類型發生變化,無法查詢。
針對上述問題,Log Service推出掃描查詢和掃描分析功能,用於查詢和分析日誌,無需對掃描的目標欄位建立索引。關於掃描分析的更多資訊,請參見掃描(Scan)分析概述。
掃描查詢模式支援SPL(SLS Processing Language,更多資訊請參見SPL概述)。對於讀取出的未經處理資料,可以通過SPL語句做結構化資訊提取、欄位操作、資料過濾等操作,並支援多級管道級聯,最終輸出經過SPL處理後的結果資料。
優點
節省費用:無需建立索引,節省索引流量和儲存空間費用。
靈活:在使用時按需定義列的類型,不受是否建立索引及索引類型限制。
搜尋能力增強,新支援多種函數。
使用限制
掃描模式下執行SPL,運行時相關限制請參考使用限制。
不支援隨機翻頁。
工作流程
Log Service接收到掃描請求後,執行流程主要分為如下兩步。
先執行對應的查詢語句進行日誌查詢。
重要第一級管道的查詢語句依賴於索引查詢,無需索引過濾時可以寫
*
。例如執行status:200 | WHERE userId = '123' | extend host=upper(hostname)
語句前,您需為status
欄位建立索引,但無需為userId
欄位和hostname
欄位建立索引。上述索引查詢結果的日誌,經過SPL語句處理(過濾、轉換、解析等操作),處理後的結果作為最終的查詢結果。
基本文法
基本文法
SPL指令的文法參考 SPL指令。
索引查詢語句 | <spl-cmd> ... | <spl-cmd> ...
使用樣本
按某個條件過濾原始日誌
status:200 | where host like '%www%'
計算出新的欄位,計算出的欄位也可以再次過濾。
status:200 | extend timediff = cast(endTime as bigint) - cast(beginTime as bigint) | where timediff > 100
將JSON欄位展開,丟棄原有的JSON欄位。
status:200 | parse-json body | project-away body
查詢與掃描的對比
對比項 | 索引查詢 | 掃描查詢 |
文法 |
|
|
是否需要配置索引 | 需要。 | 不需要。 重要 第一級豎線(|)前的索引查詢語句仍依賴於索引。 |
是否支援搭配分析語句 | 支援。 | 支援。 |
是否支援隨機翻頁 | 支援。 | 不支援。 只能連續翻頁(前翻或後翻)。 |
日誌長條圖 | 基於查詢語句的查詢結果進行展示。 | 基於查詢語句的查詢結果、掃描進度進行展示。 |
運算子與函數 | 支援邏輯、數學運算;支援模糊查詢;不支援SQL函數。 | |
欄位類型 | 由索引配置中的資料類型決定。更多資訊,請參見資料類型。 | 無論欄位是否已配置索引,在掃描模式下 SP語句中出現的欄位均按照text類型處理。詳情請參考資料類型轉換。 |
結果集大小 | 通過控制台或SDK指定,最大100條。 | 滿足下述任一條件,本次掃描結束並返回掃描結果。
|
費用 | 索引流量和索引儲存費用。更多資訊,請參見按使用功能計費模式計費項目。 | 掃描部分按照流量收費,即基於索引查詢後掃描命中的資料量收費。 |