本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
篩選條件
使用 filter
來取得與一個或多個條件相符的日誌事件。
範例:使用一個條件篩選日誌事件
程式碼片段會顯示一個查詢範例,其會傳回 range
的值大於 3000 的所有日誌事件。該查詢將結果限制為 20 筆日誌事件,並按照 @timestamp
依遞減順序對日誌事件進行排序。
fields @timestamp, @message | filter (range>3000) | sort @timestamp desc | limit 20
範例:使用多個條件篩選日誌事件
您可以使用關鍵字 and
和 or
以結合多個條件。
程式碼片段會顯示一個查詢範例,其會傳回 range
的值大於 3000 且 accountId
的值等於 123456789012 的日誌事件。該查詢將結果限制為 20 筆日誌事件,並按照 @timestamp
依遞減順序對日誌事件進行排序。
fields @timestamp, @message | filter (range>3000 and accountId=123456789012) | sort @timestamp desc | limit 20
filter 命令中的比對和規則表達式
篩選命令支援使用規則表達式。您可以使用下列比較運算子 (=
、!=
、<
、<=
、>
、>=
) 和布林值運算子 (and
、or
以及 not
)。
您可以使用關鍵字 in
來測試設定的成員資格並檢查陣列中的元素。若要檢查陣列中的元素,將陣列放在 in
之後。您可以搭配 in
使用布林運算子 not
。您可以建立查詢来使用 in
傳回欄位為字串相符的日誌事件。欄位必須是完整的字串。例如,下列程式碼片段會顯示查詢使用 in
来傳回欄位 logGroup
是完整的字串 example_group
的日誌事件。
fields @timestamp, @message | filter logGroup in ["example_group"]
您可以使用關鍵字詞 like
和 not like
來比對子字串。您可以使用規則表達式運算子 =~
來比對子字串。若要比對帶有 like
和 not like
的子字串,請將要比對的子字串放在單引號或雙引號中。您可以搭配 like
和 not like
使用規則表達式模式。若要使用規則表達式運算子來比對子字串,請以斜線括住想要比對的子字串。下列範例包含程式碼片段,示範如何使用 filter
命令來比對子字串。
範例:比對子字串
以下範例會傳回 f1
含有單字 Exception 的日誌事件。所有三個範例都會區分大小寫。
第一個範例比對帶有 like
的子字符。
fields f1, f2, f3 | filter f1 like "Exception"
第二個範例比對帶有 like
和規則表達式模式的子字串。
fields f1, f2, f3 | filter f1 like /Exception/
第三個範例會比對子字串與規則表達式。
fields f1, f2, f3 | filter f1 =~ /Exception/
範例:比對子字串與萬用字元
您可以使用句點符號 (.
) 作為規則表達式中的萬用字元來比對子字串。在下列範例中,查詢會傳回與以字串 ServiceLog
開始的 f1
的值相符項目。
fields f1, f2, f3 | filter f1 like /ServiceLog./
您可以在句點符號 (.*
) 後面放置一個星號符號,來建立窮盡數量詞,窮盡數量詞會傳回儘可能多的相符項目。例如,以下查詢會傳回與以字串 ServiceLog
開始而且還包含字串 ServiceLog
的 f1
的值相符項目。
fields f1, f2, f3 | filter f1 like /ServiceLog.*/
可能的相符項目格式如下所示:
-
ServiceLogSampleApiLogGroup
-
SampleApiLogGroupServiceLog
範例:從相符項目中排除子字串
以下範例會顯示會傳回日誌事件的查詢,傳回的日誌事件中 f1
不會含有單字 Exception。這個範例區分大小寫。
fields f1, f2, f3 | filter f1 not like "Exception"
範例:比對區分大小寫的子字串
您可以比對帶有 like
和規則表達式且區分大小寫的子字串。請將下列參數 (?i) 放置在想要比對的子字串之前。下列範例會顯示會傳回日誌事件的查詢,傳回的日誌事件中 f1
會含有單字 Exception 或 exception。
fields f1, f2, f3 | filter f1 like /(?i)Exception/