查詢語法__API-Reference_日誌服務-阿裏雲
為了能夠幫助更有效地查詢日誌,Log Service提供一套查詢語法用以表達查詢條件。用戶可以通過Log Service API中的GetLogs和GetHistograms接口或者在Log Service控製台的查詢頁麵指定查詢條件。本章節詳細說明該查詢條件的語法。
全文索引與鍵值索引
用戶有兩種模式建立對日誌庫索引:
- 全文索引:將整行日誌作為整體進行查詢,既不區分鍵與數值(Key, Value)
- 鍵值索引:指定健(Key)情況下進行查詢,例如FILE:app, Type:action。在該鍵下被包含字符串都會命中。
語法關鍵詞
Log Service 查詢條件支持如下關鍵字:
名稱 | 語義 |
---|---|
and | 雙目運算符。形式為query1 and query2 ,表示query1 和query2 查詢結果的交集。如果多個單詞間沒有語法關鍵詞,默認是and 的關係。 |
or | 雙目運算符。形式為query1 or query2 ,表示query1 和query2 查詢結果的並集。 |
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
同時配置全文索引和鍵值索引時,如果兩者的分詞字符不一樣,那麼使用全文查詢方式時數據無法查出。
查詢示例
- 同時包含a和b的日誌:
a and b
或者a b
- 包含a或者包含b的日誌:
a or b
- 包含a但是不包含b的日誌:
a not b
- 所有日誌中不包含a的日誌:
not a
- 查詢包含a而且包含b,但是不包括c的日誌:
a and b not c
- 包含a或者包含b,而且一定包含c的日誌:
(a or b ) and c
- 包含a或者包含b,但不包括c的日誌:
(a or b ) not c
- 包含a而且包含b,可能包含c的日誌:
a and b or c
- FILE字段包含apsara的日誌:
FILE:apsara
- FILE 字段包含apsara和shennong的日誌:
FILE:"apsara shennong"
或者FILE:apsara FILE: shennong
或者FILE:apsara and FILE:shennong
- 包含and的日誌:
and
- FILE字段包含apsara或者shennong的日誌:
FILE:apsara or FILE:shennong
- file info字段包含apsara的日誌:
"file info":apsara
- 包括引號的日誌:
"
- 查詢以shen開頭的所有日誌:
shen*
- 查詢FILE字段下,以shen開頭的所有日誌:
FILE:shen*
- 查詢以shen開頭,以ong結尾,中間還有一個字符:
shen?ong
- 查詢包括以shen開頭,並且包括以aps開頭的日誌:
shen* and aps*
- 查詢以shen開頭的日誌的分布,時間片為20分鍾:
shen*| timeslice 20m | count
- 查詢topic1和topic2下的所有數據:
__topic__:topic1 or __topic__ : topic2
- 查詢tagkey1下tagvalue2的所有數據:
__tag__ : tagkey1 : tagvalue2
其他
指定或跨Topic查詢
每個logstore根據topic可以劃分成一個或多個子空間,當進行查詢時,指定topic可以限定查詢範圍,達到更快速度。因此我們推薦對logstore有二級分類需求的用戶用戶使用topic進行劃分。
當指定一個或多個topic進行查詢時,僅從符合條件的topic中進行查詢。但不輸入topic,默認查詢所有topic下的數據。
使用topic來劃分不同域名下日誌的例子:
Topic查詢例子:
- 支持查詢所有topic下的數據,在查詢語法和參數中都不指定topic意味著查詢所有topic的數據。
- 支持在query中查詢Topic,查詢語法為
__topic__:topicName
。同時仍然支持舊的模式,在url參數中指定topic。 - 支持查詢多個topic,例如
__topic__:topic1 or __topic__:topic2
表示查詢topic1和topic2下的數據的並集。
Histogram查詢
日誌服務新增語法提供了自定義區間的功能。查詢語法為:
where_condition | timeslice 1[hms] |count
h為一小時
m為一分鍾
s為一秒鍾
通過變更timeslice的參數,可以靈活的調整區間大小。例如查詢2個小時數據,不同的timeslice參數對應的結果為:
timeslice 參數 | Histogram區間數 | 每個區間大小 |
---|---|---|
1h | 2 | 1小時 |
30m | 4 | 30分鍾 |
2m | 60 | 2分鍾 |
30s | 240 | 30秒 |
最後更新:2016-12-13 18:10:24
上一篇:
Logtail機器組__公共資源說明_API-Reference_日誌服務-阿裏雲
下一篇:
錯誤處理__基本介紹_SDK_日誌服務-阿裏雲
推送去重設備統計__API列表_OpenAPI 1.0_移動推送-阿裏雲
清空實例緩存__管理實例_用戶指南_雲數據庫 Memcache 版-阿裏雲
caffe最佳實踐__深度學習最佳實踐_高性能計算-阿裏雲
Android SDK配置__Android SDK手冊_App SDK 手冊_移動推送-阿裏雲
CNAME接入狀態說明__運維問題_產品常見問題_DDoS 高防IP-阿裏雲
阿裏雲發布了一款機器人,曾經一天服務600萬用戶
怎樣授權一個子用戶管理兩台指定的ECS實例___雲服務器(ECS)授權問題_授權常見問題_訪問控製-阿裏雲
查詢鏡像共享__鏡像相關接口_API 參考_雲服務器 ECS-阿裏雲
是否可以申請一個固定號碼進行短信發送?__常見問題_短信服務-阿裏雲
移動端播放器SDK__視頻播放_使用手冊_媒體轉碼-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲