索引是一種數據存儲結構,能減少日志數據的查詢耗時。通過對日志配置相應索引后,可以對索引字段的數據進行相應的查詢與分析。索引需配置合適的字段類型才能分析出您所需要的結果。
索引概念
索引配置是指對原始日志數據分詞后的字段增加索引能力。當您使用關鍵詞希望從原始日志內容中檢索指定內容,例如檢索出如下包含GET的完整日志內容:
10.20.20.10;[2024-06-01 21:52:37];GET /online/sample HTTP/1.1;200
如果不進行分詞,該日志文本會作為一個整體,不能和關鍵詞GET完全對應,因此不會被檢索到。為滿足該檢索需求,需要將日志全文切分為多個獨立、可搜索片段,每個片段稱之為一個“詞”,而這個過程稱之為“分詞”。若使用分詞符 \n\t\r,;[]{}()&^*#@~=<>/\?:'"進行分詞,將得到以下詞:10.20.20.10 、2024-06-01、21:52:37、 GET、 online 、sample、 HTTP、1.1、200
云日志服務將基于這些分詞建立索引,索引是一種數據存儲結構,可幫助您快速找到大量日志中的指定信息,如當檢索條件為GET時,上述分詞中包含GET,則認為符合檢索條件。
索引類型
云日志服務的索引類型如下:
全文索引
全文索引將日志全文整體切分為多個分詞進行索引構建,默認分詞符為 \n\t\r,;[]{}()&^*#@~=<>/\?:'" 等非字母數字字符。
開啟全文索引后,您在查詢日志時可直接通過關鍵詞進行查詢(即全文查詢),例如使用 error檢索所有出現過 error 的日志。
說明
內置保留字段不包含在全文索引中,若需要查詢內置保留字段,您需要通過字段索引Key:Value的方式進行搜索。詳情請見內置保留字段。
查詢時對大小寫敏感。例如日志為 Error,則使用 error 無法查詢到該條日志。
字段索引
字段索引將原始日志按字段(即 key:value)分別切分為多個分詞進行索引構建,配置字段索引后,您可以指定字段名稱和字段值(Key:Value)進行查詢,縮小查詢范圍。例如使用 level:error AND timeCost:>1000檢索日志級別(level)為 error 且耗時(timeCost)大于 1000ms 的日志。
說明
云日志服務默認為部分內置保留字段創建字段索引,請參考內置保留字段。
查詢時對大小寫敏感。例如示例日志level字段中含有Error,則'level:error'將無法查詢到該日志。
索引字段類型
目前支持兩種數據類型配置,如下:
| 字段類型 | 說明 |
|---|---|
| text | 字符串,大小寫敏感。 |
| double | 浮點型,可存儲整數和浮點數。 |
索引配置步驟
您可以在日志接入流程中配置索引,或接入完成后在日志單元中配置索引。以下以在日志單元中配置索引為例,介紹索引配置流程。
- 登錄。
- 在日志管理頁面的日志項目列表中,點擊已創建的日志單元名稱,進入日志單元詳情頁面。
- 點擊【設置】按鈕,打開【索引配置】標簽頁,進入索引配置界面。
- 配置全文索引:
在索引配置頁面中,“全文索引”為開啟狀態則表示已創建全文索引。 - 配置字段索引:
在字段索引下方,點擊【添加】按鈕,輸入字段名稱入與字段類型,其中字段名稱需要與采集規則中的分詞 key 一致。具體請看下方的索引配置參數說明。 - 如果日志格式為JSON,您可點擊【批量添加字段】按鈕,批量添加界面可自動獲取最新的一條日志,并自動解析JSON的字段名稱和類型。
- 配置完成后點擊確定,索引將在1-2分鐘后生效,且僅對新數據生效。
索引配置參數說明如下:
| 參數 | 說明 |
|---|---|
| 字段名稱 | 采集的日志字段名稱,僅支持數字、字母、下劃線、連字符(-)、點(.),且不能以__開頭,64個字符內。 |
| 字段類型 | 字段的數據類型。目前支持 double - 浮點型,text - 字符串。其中double也可存儲整型數據。 |
| 別名 | 預留字段,后續用于日志儀表盤等場景展示更易讀的名稱。 |
注意
創建索引字段時,字段數量最為100個。
配置的索引字段名稱需要與采集規則中的分詞 key 一致,否則配置的索引字段無效。
字段名稱不允許以雙下劃線(__)開頭。
編輯索引配置后(新增、編輯、刪除字段,修改配置項等操作),將在1-2分鐘后生效,并僅對新寫入的日志生效,已有日志數據不會更新。當前不支持對歷史日志重建索引。
示例說明
分別以單行日志與JSON日志為例,介紹應該如何配置索引。
單行日志
以下為單行日志示例:
36.111.30.4 GET /app/user/login 200
若配置采集規則時以空格作為分隔符,則日志將被解析成四個字段,并將四個字段指定對應的key為ip、method、url、status,采集后的日志將如下所示:
ip:36.111.30.4
method: GET
url: /app/user/login
status: 200
__message __: 36.111.30.4 GET /app/user/login 200
__tag__topic: xxxx
__tag__fileName: xxxx
按照這種場景,可使用以下配置對相應字段進行索引,并開啟全文索引。索引保存后大約1-2分鐘后生效。生效后,您可針對ip、method、url、status字段進行鍵值查詢,也可以使用關鍵詞如‘GET’進行全文查詢。
JSON日志
以下為JSON日志樣例:
{
"ip": "36.111.30.4",
"methos": "GET",
"url": "/app/user/login",
"status": 200,
"other": {
"source": "app"
}
}
若配置的采集規則的分割模式為JSON模式,則可以在索引配置中定義批量添加字段如下:

注意JSON索引配置的層數最多為5層(即類似 k1.k2.k3.k4.k5),超過5層深度的索引字段將會被丟棄。