全部產品
Search
文件中心

Simple Log Service:建立索引

更新時間:Dec 21, 2024

如需對採集到Logstore中的日誌進行查詢和分析,則必須建立索引。本文為您介紹Simple Log Service索引概念、索引類型、建立索引、關閉索引、配置樣本和計費說明等。

為什麼需要建立索引

通常我們使用關鍵詞從原始日誌中檢索想要的內容,例如包含curl的日誌:curl/7.74.0。如果不進行切分,該日誌文本會作為一個整體,不能和關鍵詞curl完全對應,因此不會被Simple Log Service檢索到。

為了便於檢索,需要將日誌切分成獨立、可搜尋的詞。日誌切分由分詞符實現,這些符號決定了日誌常值內容被切分的位置。以該日誌為例,使用分詞符\n\t\r,;[]{}()&^*#@~=<>/\?:'"進行分割,得到的詞是curl7.74.0Simple Log Service基於切分出的關鍵詞建立索引。建立索引後,您才能對日誌進行查詢和分析。

Simple Log ServiceProject支援建立全文索引和欄位索引。如果您同時建立了全文索引和欄位索引,以欄位索引的配置為準。

索引類型

全文索引

全文索引根據分詞符直接將整個日誌切分成多個text類型的詞語。建立全文索引後,可以通過關鍵詞進行查詢,例如查詢語句:Chrome or Safari ,查詢包括ChromeSafari的日誌。

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

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

欄位索引

欄位索引將日誌根據欄位名稱(KEY)進行區分,然後在欄位內使用分詞符進行分割。欄位索引支援textlongdoubleJSON四種類型的資料。更多資訊,請參見資料類型。建立欄位索引後,可以指定欄位名稱和欄位值(Key:Value)進行查詢,也可以使用SELECT語句。更多資訊,請參見欄位查詢

重要
  • 如需對欄位進行查詢或分析(SELECT語句),必須建立欄位索引。欄位索引的優先順序高於全文索引,如果同時建立了全文索引和欄位索引,以欄位索引的配置為準。

  • text類型的欄位,可以使用全文檢索查詢語句、欄位查詢語句和分析語句(SELECT)。

    • 如果未開啟全文索引,全文檢索查詢語句是從所有text類型的欄位中查詢結果。

    • 如果已開啟全文索引,全文檢索查詢語句是從所有日誌中查詢結果。

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

建立索引

重要
  • 不同的索引配置,會產生不同的查詢和分析結果,請根據您的需求,合理建立索引。建立索引後需要大約一分鐘生效。

  • 建立索引只對增量日誌有效。如需查詢歷史日誌,請使用重建索引功能。

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

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

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

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

控制台方式

  1. 登入Log Service控制台

  2. 在Project列表地區,單擊目標Project。

  3. 日誌儲存 > 日誌庫頁簽中,單擊目標Logstore。

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

    說明

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

    image

  5. (可選)關閉自動更新索引

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

    警告

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

    自動更新索引

  6. 建立索引

    建立全文索引

    單擊開啟索引後,全文索引開關預設開啟。您可根據需要選擇是否開啟日誌聚類大小寫敏感包含中文功能,也可選擇指定分詞符或自訂分詞符

    頁面配置如下所示:

    image

    配置項說明如下所示:

    參數

    說明

    日誌聚類

    開啟日誌聚類開關後,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四個詞,您通過任意一個詞或詞的模糊查詢都可以找到該日誌。

    建立欄位索引

    單擊開啟索引後。您可在查詢分析頁面單擊自動產生索引。Log Service會根據採集時預覽資料中的第一條內容,自動產生欄位索引。如需自訂欄位索引,可單擊頁面下方的+建立,具體欄位說明請參見配置項說明

    首次開啟時頁面如下所示:image

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

    image

    配置項說明如下所示:

    參數

    說明

    欄位名稱

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

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

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

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

    類型

    日誌欄位值(Value)的資料類型,可選值為textlongdoublejson。更多資訊,請參見資料類型

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

    別名

    欄位的別名,例如設定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四個詞,您通過任意一個詞或詞的模糊查詢都可以找到該日誌。

    包含中文

    查詢時是否區分中英文。

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

      重要

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

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

    開啟統計

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

  7. (可選)設定欄位的最大長度

    SQL分析過程中,預設為截取一定長度,Simple Log Service的預設配置為2048位元組,即2KB。如果您需要修改欄位值的最大長度,可在查詢分析頁面底部設定統計欄位(text)最大長度,取值範圍為64~16384位元組,注意更新索引配置只對增量資料有效。

    重要

    如果單個欄位值長度超過最大長度,超出部分將被截斷,不參與分析。

    設定欄位最大長度

API方式

Simple Log Service支援通過API方式管理索引。具體操作,請參見:

SDK方式

Simple Log Service支援通過多語言SDK進行索引管理,以下列舉一些常用的SDK。更多資訊,請參見SDK參考概述

Java

使用Simple Log ServiceJava SDK方式管理索引的具體操作,請參見使用Java SDK管理索引

Python

使用Simple Log ServicePython SDK方式管理索引的具體操作,請參見使用Python SDK管理索引

Log Service除自研的SDK外,還支援公用的阿里雲SDK,關於阿里雲SDK的使用方式,請參見Log Service_SDK中心-阿里雲OpenAPI開發人員門戶

CLI方式

Simple Log Service提供命令列工具CLI(Command Line Interface)管理索引。具體操作,請參見:

更新索引

操作步驟

在目標Logstore的查詢和分析頁面,選擇查詢分析屬性 > 屬性。不同的索引配置,會產生不同的查詢和分析結果,請根據您的需求,合理更新索引。更新索引後需要大約一分鐘生效。

image

關閉索引

重要

關閉索引後,歷史索引的儲存空間將在當前Logstore的資料儲存時間到期後,自動被清除。

操作步驟

在目標Logstore的查詢和分析頁面,選擇查詢分析屬性 > 關閉索引

image

索引配置樣本

樣本1

日誌內容中有request_time欄位,執列欄位查詢語句request_time>100

  • 只建立全文索引,返回同時包含request_time>(非分詞符)、100這三個詞的日誌。

  • 只建立doublelong類型的欄位索引,返回結果是request_time大於100的日誌。

  • 建立全文索引和doublelong類型的欄位索引,request_time的全文索引失效,返回結果是request_time大於100的日誌。

樣本2

日誌內容中有request_time欄位,執行全文檢索查詢語句request_time

  • 只建立doublelong類型的欄位索引,無法查詢到相關日誌。

  • 只建立全文索引,從所有日誌文本中查詢包括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類型進行計算。

    • 如果對子節點設定了索引,則其索引流量按照其子節點資料類型(textlongdouble)進行計算。

計費說明

按寫入資料量計費的logstore

按使用功能計費的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日誌的常見問題

  • 如何將日誌下載到本地

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