全部產品
Search
文件中心

Simple Log Service:資料類型

更新時間:Jun 30, 2024

您在建立索引時,可將欄位的資料類型設定為text、long、double或JSON。本文介紹各個資料類型的配置樣本及注意事項。

text類型

如果您要查詢和分析字串類型的欄位,需在配置索引時,將欄位的資料類型設定為text,並開啟統計功能。

說明

開啟全文索引後,Log Service預設將整條日誌(除__time__以外所有欄位)設定為text類型。

  • 日誌範例text日誌範例

  • 配置索引text索引

  • 查詢和分析語句

    • 查詢非GET請求的日誌。

      not request_method : GET
    • 查詢以cn開頭的日誌。

      cn*
    • 統計用戶端分布情況。

      * | SELECT ip_to_province(client_ip) as province, count(*) AS pv GROUP BY province ORDER BY pv

long和double類型

設定欄位的資料類型為long或double後,您才能通過數值範圍查詢該欄位的值。

  • 如果日誌欄位的值為整數類型,建議您在配置索引時,將欄位的資料類型設定為long。

  • 如果日誌欄位的值為浮點數類型,建議您在配置索引時,將欄位的資料類型設定double。

重要
  • 如果設定資料類型為long,而實際欄位值為浮點數類型,則無法查詢該欄位。

  • 如果設定資料類型為long或double,而實際欄位值為字串類型,則無法查詢該欄位。

  • 如果設定資料類型為long或double,則不支援使用星號(*)或半形問號(?)進行模糊查詢。

  • 如果欄位的值為非法的數值,則使用not key > -1000000語句進行查詢,表示查詢所有有效數值之外的日誌,其中-1000000為足夠小的值即可。

  • 日誌範例text日誌範例

  • 配置索引text索引

  • 查詢和分析語句

    • 查詢請求時間大於60秒的日誌。

      request_time > 60
    • 查詢請求時間大於等於60秒,並且小於200秒的日誌。

      • request_time in [60 200)
      • request_time >= 60 and request_time < 200
    • 查詢請求狀態代碼為200的日誌。

      status = 200

JSON類型

如果欄位的值為JSON類型,您可在配置索引時,將欄位的資料類型設定為JSON。

  • 針對JSON對象中的欄位,您可根據其值,將資料類型設定為long、double或text,並開啟統計功能。開啟統計功能後,Log Service支援您查詢和分析JSON對象中的欄位。

    通過選中對Json內所有文字欄位自動索引,可實現JSON對象中的所有文字欄位自動建立索引。建立索引後,將產生索引流量。image.png

  • 針對非完全合法的JSON資料,Log Service支援解析合法部分。

    例如以下為非完整的JSON日誌,Log Service可正確解析content.remote_addr欄位、content.request.request_length欄位和content.request.request_method欄位。

    content: {
         remote_addr:"192.0.2.0"
         request: {
                 request_length:"73"
                 request_method:"GE
  • 更多參考資訊

    • 關於查詢和分析JSON日誌的更多操作環境和常見問題,包括設定索引、查詢和分析具有索引的JSON欄位、使用JSON函數、分析JSON數組等,請參見查詢和分析JSON日誌的常見問題

    • 查詢和分析JSON日誌相關的基礎配置和基本用法,請參見查詢和分析JSON日誌

    • 在查詢和分析JSON日誌時,如果資料量比較小,您可以不對JSON葉子節點建立欄位索引,而是使用JSON函數進行查詢和分析。另外,針對一些特殊情況,只能使用JSON函數進行查詢與分析。相關案例,請參見何時使用JSON函數。關於JSON函數的完整介紹和案例,請參見JSON函數

重要
  • Log Service支援JSON對象中的葉子節點建立索引,但不支援包含葉子節點的子節點建立索引。

  • Log Service不支援值為JSON數組的欄位建立索引,也不支援JSON數組中的欄位建立索引。

  • 如果欄位的值為Boolean類型,則您可以在建立索引時,將欄位的資料類型設定為text。

  • 查詢和分析語句格式為查詢語句|分析語句。在分析語句中,您必須使用雙引號("")包裹欄位名稱,使用單引號('')包裹字串。

  • 日誌範例

    JSON日誌範例如下所示,除Log Service保留欄位外,還包括class欄位、latency欄位、status欄位和info欄位。其中info欄位的值是JSON對象,並存在多層嵌套。

    JSON日誌範例

  • 配置索引配置索引

    相關說明如下:

    • IP欄位和data欄位的值為JSON數組,所以您無法為IP欄位和data欄位建立索引,也無法通過這兩個欄位進行查詢和分析。

    • region欄位和CreateTime欄位在JSON數組中,所以您無法為region欄位和CreateTime欄位建立索引,也無法通過這兩個欄位進行查詢和分析。

  • 查詢和分析語句

    • 查詢usedTime欄位的值大於60秒的日誌。

      info.usedTime > 60
    • 查詢success欄位的值為true的日誌。

      info.success : true
    • 查詢usedTime欄位的值大於60秒且projectName的值不為project01的日誌。

      info.usedTime > 60 not info.param.projectName : project01
    • 計算擷取Project資訊的平均時間長度。

      methodName = getProjectInfo | SELECT avg("info.usedTime") AS avg_time