閱讀77 返回首頁    go windows go Office


查詢語法__API-Reference_日誌服務-阿裏雲

為了能夠幫助更有效地查詢日誌,Log Service提供一套查詢語法用以表達查詢條件。用戶可以通過Log Service API中的GetLogsGetHistograms接口或者在Log Service控製台的查詢頁麵指定查詢條件。本章節詳細說明該查詢條件的語法。

全文索引與鍵值索引

用戶有兩種模式建立對日誌庫索引:

  • 全文索引:將整行日誌作為整體進行查詢,既不區分鍵與數值(Key, Value)
  • 鍵值索引:指定健(Key)情況下進行查詢,例如FILE:app, Type:action。在該鍵下被包含字符串都會命中。

語法關鍵詞

Log Service 查詢條件支持如下關鍵字:

名稱 語義
and 雙目運算符。形式為query1 and query2,表示query1query2查詢結果的交集。如果多個單詞間沒有語法關鍵詞,默認是and的關係。
or 雙目運算符。形式為query1 or query2,表示query1query2查詢結果的並集。
not 雙目運算符。形式為query1 not query2,表示符合query1並且不符合query2的結果,相當於query1–query2。如果隻有not query1,那麼表示從全部日誌中選取不包含query1的結果。
( , ) 左右括號用於把一個或多個子query合並成一個query,用於提高括號內query的優先級。
: 用於key-value對的查詢。term1:term2 構成一個key-value對。如果key或者value內有空格,需要用引號把整個key或者value包括起來
把一個關鍵詞轉換成普通的查詢字符。左右引號內部的任何一個term都會被查詢,而不會當成語法關鍵詞。或者在key-value查詢中把左右引號內的所有term當成一個整體
轉義符。用於轉義引號,轉義後的引號表示符號本身,不會當成轉義字符,例如"""
| 管道運算符,表示前一個計算的基礎上進行更多計算,例如query1 | timeslice 1h | count
timeslice 時間分片運算符,表示多長時間的數據作為一個整體進行計算,使用方式有timeslice 1h, timeslice 1m,timeslice 1s分別表示以1小時,1分鍾,1s作為一個整體。例如query1 | timeslice 1h | count表示查詢query這個條件,並且返回以1小時為時間分片的總次數
count 計數運算符,表示日誌條數
* 模煳查詢關鍵字,用於替代0個或多個字符,例如:que*,會返回que開頭的所有命中詞
? 模煳查詢關鍵字,用於替代一個字符,比如 qu?ry,會返回以qu開頭,以ry結尾,並且中間還有一個字符的所有命中詞
__topic__ 查詢某個topic下數據,新的語法下,可以在query中查詢0個或多個topic的數據,例如__topic__:mytopicname
__tag__ 查詢某個tag key下某個tag value,例如 __tag__:tagkey:tagvalue
source 查詢某個ip的數據,例如source:127.0.0.1

語法關鍵詞不區分大小寫

語法關鍵字的優先級由高到底排序為 : > " > ( ) > and not > or

Log Service還保留以下關鍵字的使用權,如果您需要使用以下關鍵字,請使用引號包含起來:> = < sort asc desc group by avg sum min max limit

同時配置全文索引和鍵值索引時,如果兩者的分詞字符不一樣,那麼使用全文查詢方式時數據無法查出。

查詢示例

  1. 同時包含a和b的日誌: a and b 或者 a b
  2. 包含a或者包含b的日誌:a or b
  3. 包含a但是不包含b的日誌:a not b
  4. 所有日誌中不包含a的日誌:not a
  5. 查詢包含a而且包含b,但是不包括c的日誌:a and b not c
  6. 包含a或者包含b,而且一定包含c的日誌:(a or b ) and c
  7. 包含a或者包含b,但不包括c的日誌:(a or b ) not c
  8. 包含a而且包含b,可能包含c的日誌:a and b or c
  9. FILE字段包含apsara的日誌: FILE:apsara
  10. FILE 字段包含apsara和shennong的日誌:FILE:"apsara shennong" 或者 FILE:apsara FILE: shennong 或者 FILE:apsara and FILE:shennong
  11. 包含and的日誌:and
  12. FILE字段包含apsara或者shennong的日誌: FILE:apsara or FILE:shennong
  13. file info字段包含apsara的日誌:"file info":apsara
  14. 包括引號的日誌:"
  15. 查詢以shen開頭的所有日誌:shen*
  16. 查詢FILE字段下,以shen開頭的所有日誌:FILE:shen*
  17. 查詢以shen開頭,以ong結尾,中間還有一個字符:shen?ong
  18. 查詢包括以shen開頭,並且包括以aps開頭的日誌:shen* and aps*
  19. 查詢以shen開頭的日誌的分布,時間片為20分鍾: shen*| timeslice 20m | count
  20. 查詢topic1和topic2下的所有數據: __topic__:topic1 or __topic__ : topic2
  21. 查詢tagkey1下tagvalue2的所有數據:__tag__ : tagkey1 : tagvalue2

其他

指定或跨Topic查詢

每個logstore根據topic可以劃分成一個或多個子空間,當進行查詢時,指定topic可以限定查詢範圍,達到更快速度。因此我們推薦對logstore有二級分類需求的用戶用戶使用topic進行劃分。

當指定一個或多個topic進行查詢時,僅從符合條件的topic中進行查詢。但不輸入topic,默認查詢所有topic下的數據。

使用topic來劃分不同域名下日誌的例子:

topic

Topic查詢例子:

  1. 支持查詢所有topic下的數據,在查詢語法和參數中都不指定topic意味著查詢所有topic的數據。
  2. 支持在query中查詢Topic,查詢語法為__topic__:topicName。同時仍然支持舊的模式,在url參數中指定topic。
  3. 支持查詢多個topic,例如__topic__:topic1 or __topic__:topic2 表示查詢topic1和topic2下的數據的並集。

Histogram查詢

日誌服務新增語法提供了自定義區間的功能。查詢語法為:

  1. where_condition | timeslice 1[hms] |count
  2. h為一小時
  3. m為一分鍾
  4. s為一秒鍾

通過變更timeslice的參數,可以靈活的調整區間大小。例如查詢2個小時數據,不同的timeslice參數對應的結果為:

timeslice 參數 Histogram區間數 每個區間大小
1h 2 1小時
30m 4 30分鍾
2m 60 2分鍾
30s 240 30秒

最後更新:2016-12-13 18:10:24

  上一篇:go Logtail機器組__公共資源說明_API-Reference_日誌服務-阿裏雲
  下一篇:go 錯誤處理__基本介紹_SDK_日誌服務-阿裏雲