如需對採集到Logstore中的日誌進行查詢和分析,則必須建立索引。本文為您介紹Simple Log Service索引概念、索引類型、建立索引、關閉索引、配置樣本和計費說明等。
為什麼需要建立索引
通常我們使用關鍵詞從原始日誌中檢索想要的內容,例如包含curl
的日誌:curl/7.74.0
。如果不進行切分,該日誌文本會作為一個整體,不能和關鍵詞curl
完全對應,因此不會被Simple Log Service檢索到。
為了便於檢索,需要將日誌切分成獨立、可搜尋的詞。日誌切分由分詞符實現,這些符號決定了日誌常值內容被切分的位置。以該日誌為例,使用分詞符\n\t\r,;[]{}()&^*#@~=<>/\?:'"
進行分割,得到的詞是curl
、7.74.0
。Simple Log Service基於切分出的關鍵詞建立索引。建立索引後,您才能對日誌進行查詢和分析。
Simple Log ServiceProject支援建立全文索引和欄位索引。如果您同時建立了全文索引和欄位索引,以欄位索引的配置為準。
索引類型
全文索引
全文索引根據分詞符直接將整個日誌切分成多個text類型的詞語。建立全文索引後,可以通過關鍵詞進行查詢,例如查詢語句:Chrome or Safari
,查詢包括Chrome
或Safari
的日誌。
分詞符不支援中文,開啟包含中文選項,Log Service會自動按照中文分詞。
如果只配置全文索引,則只能使用全文檢索查詢功能。更多資訊,請參見查詢文法與功能。
欄位索引
欄位索引將日誌根據欄位名稱(KEY)進行區分,然後在欄位內使用分詞符進行分割。欄位索引支援text、long、double和JSON四種類型的資料。更多資訊,請參見資料類型。建立欄位索引後,可以指定欄位名稱和欄位值(Key:Value
)進行查詢,也可以使用SELECT語句。更多資訊,請參見欄位查詢。
如需對欄位進行查詢或分析(SELECT語句),必須建立欄位索引。欄位索引的優先順序高於全文索引,如果同時建立了全文索引和欄位索引,以欄位索引的配置為準。
text類型的欄位,可以使用全文檢索查詢語句、欄位查詢語句和分析語句(SELECT)。
如果未開啟全文索引,全文檢索查詢語句是從所有text類型的欄位中查詢結果。
如果已開啟全文索引,全文檢索查詢語句是從所有日誌中查詢結果。
long和double類型的欄位,可以使用欄位查詢語句和分析語句(SELECT)進行查詢和分析。
建立索引
不同的索引配置,會產生不同的查詢和分析結果,請根據您的需求,合理建立索引。建立索引後需要大約一分鐘生效。
建立索引只對增量日誌有效。如需查詢歷史日誌,請使用重建索引功能。
Log Service已為部分保留欄位建立索引。更多資訊,請參見保留欄位。
其中
__topic__
和__source__
的索引分詞符為空白,查詢這兩個欄位時,關鍵字必須完全符合。__tag__
為首碼的欄位不支援全文索引。您需要建立欄位索引後,才能執行查詢和分析操作,例如*| select "__tag__:__receive_time__"
。日誌中存在同名欄位(例如都為request_time)時,Log Service會將其中一個欄位名顯示為request_time_0,底層儲存的欄位名仍為request_time。因此在建立索引、查詢、分析、投遞、加工時,只能使用原始欄位名request_time。
控制台方式
API方式
SDK方式
CLI方式
更新索引
操作步驟
關閉索引
關閉索引後,歷史索引的儲存空間將在當前Logstore的資料儲存時間到期後,自動被清除。
操作步驟
索引配置樣本
樣本1
日誌內容中有request_time
欄位,執列欄位查詢語句request_time>100
。
只建立全文索引,返回同時包含
request_time
、>
(非分詞符)、100
這三個詞的日誌。只建立double、long類型的欄位索引,返回結果是
request_time
大於100的日誌。建立全文索引和double、long類型的欄位索引,
request_time
的全文索引失效,返回結果是request_time
大於100的日誌。
樣本2
日誌內容中有request_time
欄位,執行全文檢索查詢語句request_time
。
只建立double、long類型的欄位索引,無法查詢到相關日誌。
只建立全文索引,從所有日誌文本中查詢包括
request_time
的日誌。只建立text類型的欄位索引,從欄位索引是text類型的欄位中查詢包括
request_time
的日誌。
樣本3
日誌內容中有status
欄位,執行分析語句* | SELECT status, count(*) AS PV GROUP BY status
。
只建立全文索引,無法查詢到相關日誌。
為
status
建立欄位索引,返回結果是不同的狀態代碼及對應的PV總數。
索引流量說明
全文索引
所有欄位名和欄位值都將作為text類型儲存,即欄位名和欄位值都被計入索引流量。
欄位索引
不同資料類型的欄位的索引流量計算方式不同。
text類型:欄位名和欄位值都被計入索引流量中。
long類型和double類型:欄位名不計入索引流量中,每個欄位值所佔的索引流量統一為8位元組。
例如對
status
欄位設定了索引(long類型),欄位值為200
,則字串status
不會被計入在索引流量中,200
的索引流量統一為8位元組。JSON類型:欄位名和欄位值都被計入到索引流量中,包括未被建立索引的子節點。更多資訊,請參見如何計算JSON類型欄位的索引流量。
如果未對子節點設定索引,則其索引流量按照text類型進行計算。
如果對子節點設定了索引,則其索引流量按照其子節點資料類型(text、long或double)進行計算。
計費說明
按寫入資料量計費的logstore
建立的索引會佔用儲存空間,儲存類型請參見管理智能儲存分層。
重建索引不產生費用。
索引流量計費請參見按寫入資料量計費模式計費項目。
按使用功能計費的logstore
建立的索引會佔用儲存空間,儲存類型請參見管理智能儲存分層。
建立索引會產生流量,索引流量計費請參見按使用功能計費模式計費項目中的索引流量-日誌索引和索引流量-日誌索引-查詢型。降低索引流量的建議,請參見如何降低索引流量費用?。
重建索引會產生費用。計費項目、計費價格和建立索引相同。
後續步驟
查詢和分析的樣本,請參見:
最佳化查詢的方法,請參見提高查詢分析日誌速度的方法。
查詢和分析JSON類型的網站日誌,請參見查詢和分析JSON日誌。