您在建立索引時,可將欄位的資料類型設定為text、long、double或JSON。本文介紹各個資料類型的配置樣本及注意事項。
資料類型概述
在建立索引時,推薦使用控制台方式建立索引,Log Service會根據採集時預覽資料中的第一條內容,自動產生欄位索引,同時也支援自訂欄位索引。
Log Service提供如下資料類型,請按情況進行選擇:
-
text、long、double類型:
-
如果您要查詢和分析字串類型的欄位,需在配置索引時,將欄位的資料類型設定為text,並開啟統計功能。
說明text、long 和 double 類型的欄位均可獨立開啟統計功能。只有開啟統計功能後,該欄位才能用於 SQL 查詢中的 WHERE 條件過濾、彙總分析(SELECT/GROUP BY)以及可視化展示。若未開啟統計,欄位在 SQL 查詢分析中可能無法提取或返回 null。
在控制台索引值索引屬性配置介面中,每個欄位行均有一個開啟統計開關,text/long/double 三種類型均可獨立開啟,不隨欄位類型變化而隱藏。
-
只有欄位的資料類型為long或double時,您才能通過數值範圍查詢該欄位的值,但不支援使用星號(*)或半形問號(?)進行模糊查詢。
-
如果日誌欄位的值為整數類型,請將欄位的資料類型設定為long。
-
如果日誌欄位的值為浮點數類型,請將欄位的資料類型設定double,否則無法查詢該欄位。
-
如果設定資料類型為long或double,而實際欄位值為字串類型,則無法查詢該欄位。
重要如果欄位的值為非法的數值,則使用not key > -1000000語句進行查詢,表示查詢所有有效數值之外的日誌,其中-1000000為足夠小的值即可。
-
-
-
JSON類型:欄位的值為JSON類型,您可在配置索引時,將欄位的資料類型設定為JSON。
-
針對JSON對象中的欄位,您可根據其值,將資料類型設定為long、double或text,並開啟統計功能。開啟統計功能後,Log Service支援您查詢和分析JSON對象中的欄位。
通過選中對Json內所有文字欄位自動索引,可實現JSON對象中的所有文字欄位自動建立索引。建立索引後,將產生索引流量。

-
針對非完全合法的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函數。
-
-
操作步驟
-
在建立索引中按照控制台方式進行索引建立。
-
在配置索引中選擇對應的索引類型。
text、long、double類型
-
日誌範例

-
配置索引

-
查詢和分析語句樣本
-
查詢請求時間大於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對象,並存在多層嵌套。

-
配置索引

相關說明如下:
-
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。
-
-
在配置索引時,請注意以下規則:
-
全文索引屬性和索引值索引屬性必須至少啟用一種。
-
欄位索引配置會覆蓋全文索引中同名欄位的設定。例如,全文索引中已對某個欄位進行分詞檢索,如果在索引值索引中對該欄位單獨配置了類型和屬性,則以索引值索引中的配置為準。
-
索引類型為 long/double 時,大小寫敏感和分詞符屬性無效。
-
目前只支援縮短索引儲存時間。
-
索引配置修改(包括新增欄位、修改類型、開啟統計/查詢開關等)後約 1 分鐘生效,但僅對索引生效後寫入的新資料可查詢。如需查詢歷史資料,需對歷史資料執行重建索引操作。具體操作請參見重建索引。
-
重建索引僅支援最近 30 天且至少 15 分鐘前的資料。