filterIndex - Amazon CloudWatch Logs

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

filterIndex

filterIndex 使用 僅傳回索引資料,方法是強制查詢僅掃描您在查詢中指定的欄位上編製索引的日誌群組。對於在此欄位上編製索引的這些日誌群組,它會略過沒有包含索引欄位查詢中指定欄位之任何日誌事件的日誌群組,以進一步最佳化查詢。它透過嘗試僅掃描這些日誌群組中符合此欄位索引查詢中指定值的日誌事件,進一步減少掃描的磁碟區。如需欄位索引以及如何建立它們的詳細資訊,請參閱 建立欄位索引以改善查詢效能並減少掃描磁碟區

透過將實際搜尋空間限制為具有欄位索引的日誌群組和日誌事件,使用 filterIndex搭配索引欄位可協助您有效率地查詢包含 PB 日誌資料的日誌群組。

例如,假設您已在帳戶中的某些日誌群組IPaddress中為 建立欄位索引。然後,您可以建立下列查詢,並選擇查詢帳戶中的所有日誌群組,以尋找包含 198.51.100.0 IPaddress 欄位中值的日誌事件。

fields @timestamp, @message | filterIndex IPaddress = "198.51.100.0" | limit 20

filterIndex 命令會導致此查詢嘗試略過未為 編製索引的所有日誌群組IPaddress。此外,在編製索引的日誌群組中,查詢會略過具有 IPaddress 欄位,但未觀察198.51.100.0為該欄位值的日誌事件。

使用 IN運算子將結果擴展到索引欄位的多個值中的任何一個。下列範例會尋找包含 值198.51.100.0198.51.100.1 IPaddress欄位中的日誌事件。

fields @timestamp, @message | filterIndex IPaddress in ["198.51.100.0", "198.51.100.1"] | limit 20

CloudWatch Logs 為標準日誌類別中的所有日誌群組提供預設欄位索引。預設欄位索引會自動用於下列欄位:

  • @logStream

  • @aws.region

  • @aws.account

  • @source.log

  • traceId

預設欄位索引是附加於您在政策中定義的任何自訂欄位索引。預設欄位索引不會計入您的欄位索引配額

filterIndex 與篩選條件的比較

若要說明 filterIndex和 之間的差異filter,請考慮下列範例查詢。假設您已為四個日誌群組建立 的欄位索引IPaddress,但不是為第五個日誌群組建立。下列使用 的查詢filterIndex會略過掃描沒有欄位索引的日誌群組。對於每個索引日誌群組,它會嘗試僅掃描具有索引欄位的日誌事件,而且也會在建立欄位索引之後僅傳回 的結果。

fields @timestamp, @message | filterIndex IPaddress = "198.51.100.0" | limit 20

相反地,如果您使用 filter而不是 filterIndex 來查詢相同的五個日誌群組,查詢不僅會嘗試掃描索引日誌群組中包含 值的日誌事件,還會掃描未編製索引的第五個日誌群組,而且會掃描該第五個日誌群組中的每個日誌事件。

fields @timestamp, @message | filter IPaddress = "198.51.100.0" | limit 20