全部產品
Search
文件中心

Simple Log Service:建立索引

更新時間:Nov 13, 2024

如需對採集到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,;[]{}()&^*#@~=<>/\?:'"進行分割,得到的詞是Mozilla5.0WindowsNT6.1AppleWebKit537.2KHTMLlikeGeckoChrome192.0.2.0Safari537.2

Simple Log ServiceProject基於這些切分出的關鍵詞建立索引。建立索引後,您才能對日誌資料進行查詢和分析。

索引類型

  • 全文索引

    重要

    分詞符不支援中文,開啟包含中文選項,Log Service會自動按照中文分詞。

    如果只配置全文索引,則只能使用查詢功能。更多資訊,請參見查詢文法

    根據分詞符直接將整個日誌切分成多個text類型的詞語。可以通過關鍵詞進行查詢,例如查詢語句:Chrome or Safari ,查詢包括ChromeSafari的日誌。更多資訊,請參見查詢文法

    image

  • 欄位索引

    說明

    在採集日誌或投遞資料到其他雲產品時,Log Service會將日誌來源、時間戳記等資訊以Key-Value對的形式添加到日誌中。這些欄位是Log Service的保留欄位

    先將日誌根據欄位名稱(KEY)進行區分,然後在欄位內使用分詞符進行分割,欄位類型包括textlongdoublejson

    • text類型的欄位,可以使用全文檢索查詢語句、欄位查詢語句、分析語句(SELECT)。如果未開啟全文索引,全文檢索查詢語句是從所有text類型的欄位中查詢結果。如果已開啟全文索引,全文檢索查詢語句是從所有日誌中查詢結果。

    • longdouble類型的欄位,可以使用欄位查詢語句、分析語句(SELECT)進行查詢和分析。

    建立欄位索引後,您可以指定欄位名稱和欄位值(Key:Value)進行查詢,也可以使用SELECT語句。更多資訊,請參見欄位查詢文法查詢與分析概述image

建立索引

重要

不同的索引配置,會產生不同的查詢和分析結果,請根據您的需求,合理建立索引。如果您同時建立了全文索引和欄位索引,以欄位索引的配置為準。

配置索引只對新增日誌生效,對於已有日誌需要重建索引,配置索引後需要大約一分鐘生效。

  1. 登入Log Service控制台,在Project列表,單擊開啟目標Project。

  2. 在左側導覽列單擊日誌儲存,然後在開啟的日誌庫頁簽中,單擊目標Logstore。

  3. 在Logstore的查詢和分析頁面,單擊開啟索引

    說明

    開啟後等待1min左右即可查詢最新資料。

    image

  4. 關閉自動更新索引

    當Logstore為雲產品專屬Logstore或內部Logstore時,預設開啟索引自動更新開關,後續如有版本更新時可以升級到內建索引最新版本。如果需要建立索引,請在查詢分析面板中,關閉自動更新開關。

    警告

    刪除雲產品專屬Logstore的索引會影響相關報表、警示等功能的使用。

    自動更新索引

  5. 配置索引

    查詢分析頁面,開啟全文索引開關,並單擊自動產生索引。Log Service會根據採集時預覽資料中的第一條內容,自動產生欄位索引。單擊頁面下方的+也可手動建立欄位索引。

    image

    重要
    • 如果需要對欄位進行分析(SELECT語句),必須建立欄位索引,欄位索引的配置項優先順序高於全文索引的配置項。

    • Log Service已為部分保留欄位建立索引。更多資訊,請參見保留欄位

      其中__topic____source__的索引分詞符為空白,查詢這兩個欄位時,關鍵字必須完全符合。

    • __tag__為首碼的欄位不支援全文索引。您需要建立欄位索引後,才能執行查詢和分析操作,例如*| select "__tag__:__receive_time__"

    • 日誌中存在同名欄位(例如都為request_time)時,Log Service會將其中一個欄位名顯示為request_time_0,底層儲存的欄位名仍為request_time。因此在建立索引、查詢、分析、投遞、加工時,只能使用原始欄位名request_time。

    全文索引配置項說明如下所示:

    參數

    說明

    日誌聚類

    開啟日誌聚類開關後,Log Service在採集文本日誌時會自動彙總相似性高的日誌,提取共同的記錄模式,協助您快速掌握日誌整體情況。更多資訊,請參見日誌聚類

    大小寫敏感

    查詢時是否區分英文字母的大小寫。

    • 開啟大小寫敏感開關,則查詢時區分大小寫。例如某條日誌含有internalError,那麼您只能使用internalError才能查詢到該日誌。

    • 關閉大小寫敏感開關,則查詢時不區分大小寫。例如某條日誌含有internalError,那麼您使用關鍵字INTERNALERRORinternalerror都能查到該日誌。

    包含中文

    查詢時是否區分中英文。

    • 開啟包含中文開關後,如果日誌中包含中文,則按照中文文法拆分中文內容,按照分詞符的設定拆分英文內容。

      重要

      中文分詞對寫入速度會有一定影響,請根據需求謹慎設定。

    • 關閉包含中文開關後,按照分詞符的設定拆分所有內容。

    分詞符

    根據指定分詞符,將日誌內容拆分成多個詞。Log Service的預設分詞符為, '";=()[]{}?@&<>/:\n\t\r。當預設設定不能滿足您的需求時,您可以自訂設定分詞符。所有的ASCII碼都可被定義為分詞符。

    如果設定分詞符為空白,則欄位值將被當成一個整體,您只能通過完整字串或模糊查詢尋找對應的日誌。

    例如日誌內容為/url/pic/abc.gif

    • 如果不設定任何分詞符,整條日誌被作為一個詞/url/pic/abc.gif,您只能通過完整字串/url/pic/abc.gif或模糊查詢/url/pic/*尋找該日誌。

    • 如果設定分詞符為正斜線(/),則原始日誌被拆分為urlpicabc.gif三個詞,您通過任意一個詞或詞的模糊查詢都可以找到該日誌,例如urlabc.gifpi*/url/pic/abc.gif

    • 如果設定分詞符為正斜線(/)和半形句號(.),則原始日誌被拆分為urlpicabcgif四個詞,您通過任意一個詞或詞的模糊查詢都可以找到該日誌。

    欄位索引配置項說明如下所示:

    參數

    說明

    欄位名稱

    日誌欄位名稱(KEY),例如client_ip

    欄位名稱只能包括字母、數字或底線(_),且只能以字母或底線(_)開頭。

    重要
    • 設定公網IP地址、Unix時間戳記等__tag__欄位的索引時,需設定欄位名稱__tag__:KEY形式,例如__tag__:__receive_time__。更多資訊,請參見保留欄位

    • __tag__欄位不支援數實值型別索引,請將所有__tag__欄位的索引的類型設定為text

    類型

    日誌欄位值(Value)的資料類型,可選值為text、long、double和json。更多資訊,請參見資料類型

    long類型和double類型不支援設定大小寫敏感包含中文分詞符

    別名

    欄位的別名,例如設定client_ip欄位的別名為ip

    欄位別名只能包括字母、數字或底線(_),且只能以字母或底線(_)開頭。

    重要

    別名僅用於分析語句(SELECT語句),查詢語句中仍需使用原始欄位名稱。更多資訊,請參見列的別名

    大小寫敏感

    查詢時是否區分英文字母的大小寫。

    • 開啟大小寫敏感開關,則查詢時區分大小寫。例如某條日誌含有internalError,那麼您只能使用internalError才能查詢到該日誌。

    • 關閉大小寫敏感開關,則查詢時不區分大小寫。例如某條日誌含有internalError,那麼您使用關鍵字INTERNALERRORinternalerror都能查到該日誌。

    分詞符

    根據指定分詞符,將日誌內容拆分成多個詞。Log Service的預設分詞符為, '";=()[]{}?@&<>/:\n\t\r。當預設設定不能滿足您的需求時,您可以自訂設定分詞符。所有的ASCII碼都可被定義為分詞符。

    如果設定分詞符為空白,則欄位值將被當成一個整體,您只能通過完整字串或模糊查詢尋找對應的日誌。

    例如日誌內容為/url/pic/abc.gif

    • 如果不設定任何分詞符,整條日誌被作為一個詞/url/pic/abc.gif,您只能通過完整字串/url/pic/abc.gif或模糊查詢/url/pic/*尋找該日誌。

    • 如果設定分詞符為正斜線(/),則原始日誌被拆分為urlpicabc.gif三個詞,您通過任意一個詞或詞的模糊查詢都可以找到該日誌,例如urlabc.gifpi*/url/pic/abc.gif

    • 如果設定分詞符為正斜線(/)和半形句號(.),則原始日誌被拆分為urlpicabcgif四個詞,您通過任意一個詞或詞的模糊查詢都可以找到該日誌。

    包含中文

    查詢時是否區分中英文。

    • 開啟包含中文開關後,如果日誌中包含中文,則按照中文文法拆分中文內容,按照分詞符的設定拆分英文內容。

      重要

      中文分詞對寫入速度會有一定影響,請根據需求謹慎設定。

    • 關閉包含中文開關後,按照分詞符的設定拆分所有內容。

    開啟統計

    開啟開啟統計功能後,您才能對該欄位進行統計分析。

索引配置樣本

  • 日誌內容中有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的資料儲存時間到期後,自動被清除。

相關文檔

常見問題

  • 為什麼匯入日誌後查詢不到日誌?

    • 檢查已設定的分詞符是否符合要求。

    • 索引配置只對新增日誌生效,如果您要查詢和分析歷史資料,請使用重建索引功能。具體操作,請參見重建索引

  • 如何完成雙重條件查詢?

    需要使用兩個條件查詢日誌時,只需同時輸入兩個語句即可。需要在Logstore中查詢資料狀態不是OK或者Unknown的日誌。 直接搜尋not OK not Unknown即可得到合格日誌。

  • 如何查詢包括包含多個關鍵字的日誌?

    以查詢http_user_agent欄位值中包含like Gecko的日誌為例。

    • 短語查詢。http_user_agent:#"like Gecko"。短語查詢

    • like文法。* | Select * where http_user_agent like '%like Gecko%'

  • 如何在日誌中搜尋包含空格的關鍵字?

    例如,當您搜尋POS version時,會得到包含POS或者version的所有日誌。如果使用雙引號包裹,例如“POS version”,則會得到包含關鍵字POS version的所有日誌。

  • 日誌查詢常見問題

  • 查詢與分析日誌的常見報錯

  • 如何模糊查詢日誌?

  • 查詢和分析JSON日誌的常見問題

  • 如何將日誌下載到本地

  • 為什麼查詢和分析時,欄位值會被截斷?