倒排索引是一種資料存放區結構,由關鍵詞和指向實際資料的邏輯指標組成,記錄了特定常值內容出現在哪些日誌中,用於快速根據關鍵詞定位到具體資料行,類似於資料的目錄。建立索引後,您才能對日誌資料進行查詢和分析。本文為您介紹Log Service索引概念、索引類型、配置索引樣本和步驟。
前提條件
進行日誌分析前,需要先將日誌採集到Standard Logstore中。更多資訊,請參見資料擷取概述和管理Logstore。
索引概念和索引類型
索引概念
通常我們使用關鍵詞,從原始日誌內容中檢索想要的內容,例如檢索出包含Chrome的如下日誌內容。如果不進行切分,該日誌文本會作為一個整體,不能和關鍵詞Chrome完全對應,因此不會被檢索到。
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2
為了便於檢索,需要將日誌切分成獨立、可搜尋的詞。日誌切分由分詞符實現,這些符號決定了日誌常值內容被切分的位置。以該日誌為例,使用分詞符\n\t\r,;[]{}()&^*#@~=<>/\?:'"
進行分割,得到的詞是Mozilla
、5.0
、Windows
、NT
、6.1
、AppleWebKit
、537.2
、KHTML
、like
、Gecko
、Chrome
、192.0.2.0
、Safari
、537.2
。
Log Service基於這些切分出的關鍵詞建立索引,索引是一種資料存放區結構,協助使用者快速找到大量日誌中的特定資訊。
索引類型
索引分為全文索引和欄位索引。分詞符不支援中文,開啟包含中文選項,Log Service會自動按照中文分詞。
全文索引:根據分詞符直接將整個日誌切分成多個text類型的詞語。可以通過關鍵詞進行查詢,例如查詢語句:
Chrome or Safari
,查詢包括Chrome
或Safari
的日誌。更多資訊,請參見查詢文法。欄位索引:先將日誌根據欄位名稱(KEY)進行區分,然後在欄位內使用分詞符進行分割,欄位類型包括
text
、long
、double
、JSON
。建立欄位索引後,您可以指定欄位名稱和欄位值(Key:Value)進行查詢,也可以使用SELECT語句。更多資訊,請參見欄位查詢文法和分析概述。說明在採集日誌或投遞資料到其他雲產品時,Log Service會將日誌來源、時間戳記等資訊以Key-Value對的形式添加到日誌中。這些欄位是Log Service的保留欄位。
建立欄位索引後,可以使用以下查詢和分析語句:
查詢語句:
request_method:GET and status in [200 299]
,查詢GET請求成功(狀態代碼為200~299)的日誌。request_method:GET not region:cn-hangzhou
,查詢來自非杭州地區的GET請求的日誌。查詢和分析語句:
* | SELECT status_code FROM web_logs
。查詢和分析語句:
level: ERROR | SELECT status_code FROM web_logs
。
配置索引的策略
配置索引只對新增日誌生效,對於已有日誌需要重建索引,配置索引後需要大致一分鐘生效。更多的欄位索引配置樣本,請參見查詢和分析JSON日誌、查詢和分析網站日誌。
不同的索引配置,會產生不同的查詢和分析結果,請根據您的需求,合理建立索引。如果您同時建立了全文索引和欄位索引,以欄位索引的配置為準。
只配置全文索引,則只能使用查詢文法進行查詢。
配置欄位索引。
long、double類型的欄位,可以使用欄位查詢語句、分析語句(SELECT)進行查詢和分析。
text類型的欄位,可以使用全文檢索查詢語句、欄位查詢語句、分析語句(SELECT)。如果未開啟全文索引,全文檢索查詢語句是從所有text類型的欄位中查詢結果。如果已開啟全文索引,全文檢索查詢語句是從所有日誌中查詢結果。
索引配置樣本
日誌內容中有
request_time
欄位,執列欄位查詢語句request_time>100
。只建立全文索引,返回同時包含
request_time
、>
(非分詞符)、100
這三個詞的日誌。只建立double、long類型的欄位索引,返回結果是
request_time
大於100的日誌。建立全文索引和double、long類型的欄位索引,
request_time
的全文索引失效,返回結果是request_time
大於100的日誌。
日誌內容中有
request_time
欄位,執行全文檢索查詢語句request_time
。只建立double、long類型的欄位索引,無法查詢到相關日誌。
只建立全文索引,從所有日誌文本中查詢包括
request_time
的日誌。只建立text類型的欄位索引,從欄位索引是text類型的欄位中查詢包括
request_time
的日誌。
日誌內容中有
status
欄位,執行分析語句* | SELECT status, count(*) AS PV GROUP BY status
。只建立全文索引,無法查詢到相關日誌。
為
status
建立欄位索引,返回結果是不同的狀態代碼及對應的PV總數。
索引流量
全文索引。所有欄位名和欄位值都將作為text類型儲存,即欄位名和欄位值都被計入索引流量。
欄位索引。不同資料類型的欄位的索引流量計算方式不同。
text類型:欄位名和欄位值都被計入索引流量中。
long類型和double類型:欄位名不計入在索引流量中,每個欄位值所佔的索引流量統一為8位元組。
例如對
status
欄位設定了索引(long類型),欄位值為400
,則字串status
不會被計入在索引流量中,400
的索引流量統一為8位元組。JSON類型:欄位名和欄位值都被計入到索引流量中,包括未被建立索引的子節點。更多資訊,請參見如何計算JSON類型欄位的索引流量。
如果未對子節點設定索引,則其索引流量按照text類型進行計算。
如果對子節點設定了索引,則其索引流量按照其子節點資料類型(text類型、long類型或double類型)進行計算。
計費說明
Logstore的計費方式,包含按寫入資料量計費和按使用功能計費。具體資訊,請參見管理Logstore、按使用功能計費模式計費項目和按寫入資料量計費模式計費項目。
按寫入資料量計費的logstore
建立的索引會佔用儲存空間,儲存類型請參見管理智能儲存分層。
重建索引不產生費用。
按使用功能計費的logstore
建立的索引會佔用儲存空間,儲存類型請參見管理智能儲存分層。
建立索引會產生流量,索引流量計費請參見按使用功能計費模式計費項目中的索引流量-日誌索引和索引流量-日誌索引-查詢型。降低索引流量的建議,請參見文末的相關文檔。
重建索引會產生費用。計費項目、計費價格和建立索引相同。
建立流程
步驟一:建立索引
進入建立索引頁面。
在Project列表地區,單擊目標Project。
在
頁簽中,單擊目標Logstore。在Logstore的查詢和分析頁面,選擇
。如果還未建立索引,需要先單擊開啟索引。
關閉自動更新索引。當Logstore為雲產品專屬Logstore或內部Logstore時,預設開啟索引自動更新開關,後續如有版本更新時可以升級到內建索引最新版本。如果需要建立索引,請在查詢分析面板中,關閉自動更新開關。
警告刪除雲產品專屬Logstore的索引會影響相關報表、警示等功能的使用。
建立索引。
配置索引參數。如果需要對欄位進行分析(SELECT語句),必須建立欄位索引,欄位索引的配置項優先順序高於全文索引的配置項。建立索引後,在1分鐘內生效。
重要Log Service已為部分保留欄位建立索引。更多資訊,請參見保留欄位。
其中
__topic__
和__source__
的索引分詞符為空白,查詢這兩個欄位時,關鍵字必須完全符合。__tag__
為首碼的欄位不支援全文索引。您需要建立欄位索引後,才能執行查詢和分析操作,例如*| select "__tag__:__receive_time__"
。日誌中存在同名欄位(例如都為request_time)時,則Log Service會將其中一個欄位名顯示為request_time_0,底層儲存的欄位名仍為request_time。因此在建立索引、查詢、分析、投遞、加工時,只能使用原始欄位名request_time。
步驟二:重建索引
當您需要對歷史資料配置索引或修改索引時,可以使用重建索引功能。Log Service支援在選定的時間段中按照最新的索引規則為Logstore重建索引。操作步驟,請參見重建索引和函數概覽。
後續步驟
查詢和分析日誌
操作步驟,請參見查詢和分析日誌。查詢和分析的樣本,請參見查詢和分析網站日誌、查詢和分析JSON日誌、採集和查詢分析Nginx監控日誌、分析負載平衡7層訪問日誌。
設定欄位的最大長度
分析時,Log Service預設支援的欄位值最大長度為2048位元組,即2KB。如果您需要修改欄位值的最大長度,可設定統計欄位(text)最大長度,取值範圍為64~16384位元組。
當單個欄位值長度超過最大長度時,超出部分被截斷,不參與分析。
日誌聚類
開啟日誌聚類開關,Log Service在採集文本日誌時會自動彙總相似性高的日誌,提取共同的記錄模式,協助您快速掌握日誌整體情況。更多資訊,請參見日誌聚類。
關閉索引
關閉索引後,歷史索引的儲存空間將在當前Logstore的資料儲存時間到期後,自動被清除。
相關文檔
最佳化查詢的方法,請參見提高查詢分析日誌速度的方法。
查詢和分析JSON類型的網站日誌,請參見查詢和分析JSON日誌。
常見問題
相關API
為Logstore建立索引,請參見CreateIndex。
刪除指定Logstore的索引,請參見DeleteIndex。
查詢指定Logstore的索引,請參見GetIndex。
更新指定Logstore的索引配置資訊,請參見UpdateIndex。