如需對採集到Logstore中的日誌進行查詢和分析,您必須首先建立索引。本文為您介紹Log Service索引概念、索引類型、配置索引樣本和步驟。
為什麼需要建立索引
通常我們使用關鍵詞,從原始日誌內容中檢索想要的內容,例如檢索出包含Chrome的如下日誌內容:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2
如果不進行切分,該日誌文本會作為一個整體,不能和關鍵詞Chrome完全對應,因此不會被Simple Log ServiceProject檢索到。為了便於檢索,需要將日誌切分成獨立、可搜尋的詞。日誌切分由分詞符實現,這些符號決定了日誌常值內容被切分的位置。以該日誌為例,使用分詞符\n\t\r,;[]{}()&^*#@~=<>/\?:'"
進行分割,得到的詞是Mozilla
、5.0
、Windows
、NT
、6.1
、AppleWebKit
、537.2
、KHTML
、like
、Gecko
、Chrome
、192.0.2.0
、Safari
、537.2
。
Simple Log ServiceProject基於這些切分出的關鍵詞建立索引。建立索引後,您才能對日誌資料進行查詢和分析。
索引類型
全文索引
重要分詞符不支援中文,開啟包含中文選項,Log Service會自動按照中文分詞。
如果只配置全文索引,則只能使用查詢功能。更多資訊,請參見查詢文法。
根據分詞符直接將整個日誌切分成多個text類型的詞語。可以通過關鍵詞進行查詢,例如查詢語句:
Chrome or Safari
,查詢包括Chrome
或Safari
的日誌。更多資訊,請參見查詢文法。欄位索引
說明在採集日誌或投遞資料到其他雲產品時,Log Service會將日誌來源、時間戳記等資訊以Key-Value對的形式添加到日誌中。這些欄位是Log Service的保留欄位。
先將日誌根據欄位名稱(KEY)進行區分,然後在欄位內使用分詞符進行分割,欄位類型包括
text
、long
、double
和json
。text
類型的欄位,可以使用全文檢索查詢語句、欄位查詢語句、分析語句(SELECT)。如果未開啟全文索引,全文檢索查詢語句是從所有text類型的欄位中查詢結果。如果已開啟全文索引,全文檢索查詢語句是從所有日誌中查詢結果。long
、double
類型的欄位,可以使用欄位查詢語句、分析語句(SELECT)進行查詢和分析。
建立欄位索引後,您可以指定欄位名稱和欄位值(Key:Value)進行查詢,也可以使用SELECT語句。更多資訊,請參見欄位查詢文法和查詢與分析概述。
建立索引
不同的索引配置,會產生不同的查詢和分析結果,請根據您的需求,合理建立索引。如果您同時建立了全文索引和欄位索引,以欄位索引的配置為準。
配置索引只對新增日誌生效,對於已有日誌需要重建索引,配置索引後需要大約一分鐘生效。
登入Log Service控制台,在Project列表,單擊開啟目標Project。
在左側導覽列單擊日誌儲存,然後在開啟的日誌庫頁簽中,單擊目標Logstore。
在Logstore的查詢和分析頁面,單擊開啟索引。
說明開啟後等待1min左右即可查詢最新資料。
關閉自動更新索引
當Logstore為雲產品專屬Logstore或內部Logstore時,預設開啟索引自動更新開關,後續如有版本更新時可以升級到內建索引最新版本。如果需要建立索引,請在查詢分析面板中,關閉自動更新開關。
警告刪除雲產品專屬Logstore的索引會影響相關報表、警示等功能的使用。
配置索引
在查詢分析頁面,開啟全文索引開關,並單擊自動產生索引。Log Service會根據採集時預覽資料中的第一條內容,自動產生欄位索引。單擊頁面下方的
+
也可手動建立欄位索引。重要如果需要對欄位進行分析(SELECT語句),必須建立欄位索引,欄位索引的配置項優先順序高於全文索引的配置項。
Log Service已為部分保留欄位建立索引。更多資訊,請參見保留欄位。
其中
__topic__
和__source__
的索引分詞符為空白,查詢這兩個欄位時,關鍵字必須完全符合。__tag__
為首碼的欄位不支援全文索引。您需要建立欄位索引後,才能執行查詢和分析操作,例如*| select "__tag__:__receive_time__"
。日誌中存在同名欄位(例如都為request_time)時,Log Service會將其中一個欄位名顯示為request_time_0,底層儲存的欄位名仍為request_time。因此在建立索引、查詢、分析、投遞、加工時,只能使用原始欄位名request_time。
全文索引配置項說明如下所示:
欄位索引配置項說明如下所示:
索引配置樣本
日誌內容中有
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類型),欄位值為200
,則字串status
不會被計入在索引流量中,200
的索引流量統一為8位元組。JSON類型:欄位名和欄位值都被計入到索引流量中,包括未被建立索引的子節點。更多資訊,請參見如何計算JSON類型欄位的索引流量。
如果未對子節點設定索引,則其索引流量按照text類型進行計算。
如果對子節點設定了索引,則其索引流量按照其子節點資料類型(text類型、long類型或double類型)進行計算。
計費說明
按寫入資料量計費的logstore
建立的索引會佔用儲存空間,儲存類型請參見管理智能儲存分層。
重建索引不產生費用。
索引流量計費請參見按寫入資料量計費模式計費項目。
按使用功能計費的logstore
建立的索引會佔用儲存空間,儲存類型請參見管理智能儲存分層。
建立索引會產生流量,索引流量計費請參見按使用功能計費模式計費項目中的索引流量-日誌索引和索引流量-日誌索引-查詢型。降低索引流量的建議,請參見如何降低索引流量費用?。
重建索引會產生費用。計費項目、計費價格和建立索引相同。
後續步驟
查詢和分析日誌
查詢和分析的樣本,請參見:
設定欄位的最大長度
分析時,Log Service預設支援的欄位值最大長度為
2048
位元組,即2KB。如果您需要修改欄位值的最大長度,可設定統計欄位(text)最大長度,取值範圍為64~16384位元組。重要當單個欄位值長度超過最大長度時,超出部分被截斷,不參與分析。
日誌聚類
開啟日誌聚類開關,Log Service在採集文本日誌時會自動彙總相似性高的日誌,提取共同的記錄模式,協助您快速掌握日誌整體情況。更多資訊,請參見日誌聚類。
關閉索引
關閉索引後,歷史索引的儲存空間將在當前Logstore的資料儲存時間到期後,自動被清除。
相關文檔
最佳化查詢的方法,請參見提高查詢分析日誌速度的方法。
查詢和分析JSON類型的網站日誌,請參見查詢和分析JSON日誌。
使用API管理索引,請參見: