全部產品
Search
文件中心

Simple Log Service:資料類型

更新時間:Aug 23, 2025

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

資料類型概述

建立索引時,推薦使用控制台方式建立索引,Log Service會根據採集時預覽資料中的第一條內容,自動產生欄位索引,同時也支援自訂欄位索引。

Log Service提供如下資料類型,請按情況進行選擇:

  • text、long、double類型:

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

    • 只有欄位的資料類型為long或double時,您才能通過數值範圍查詢該欄位的值,但不支援使用星號(*)或半形問號(?)進行模糊查詢。

      • 如果日誌欄位的值為整數類型,請將欄位的資料類型設定為long。

      • 如果日誌欄位的值為浮點數類型,請將欄位的資料類型設定double,否則無法查詢該欄位。

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

      重要

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

  • 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
      重要
      • Log Service支援JSON對象中的葉子節點建立索引,但不支援包含葉子節點的子節點建立索引。

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

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

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

    • 更多參考資訊

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

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

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

操作步驟

  1. 建立索引中按照控制台方式進行索引建立。

  2. 在配置索引中選擇對應的索引類型。

    text、long、double類型

    • 日誌範例text日誌範例

    • 配置索引text索引

    • 查詢和分析語句樣本

      • 查詢請求時間大於60秒的日誌:request_time > 60

      • 查詢請求時間大於等於60秒,並且小於200秒的日誌:request_time in [60 200)或者request_time >= 60 and request_time < 200

      • 查詢請求狀態代碼為200的日誌:status = 200

      • 查詢非GET請求的日誌:not request_method : GET

      • 查詢以cn開頭的日誌:cn*

      • 統計用戶端分布情況:* | SELECT ip_to_province(client_ip) as province, count(*) AS pv GROUP BY province ORDER BY pv

    JSON類型

    • 日誌範例

      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