

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

# filterIndex
<a name="CWL_QuerySyntax-FilterIndex"></a>

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

透過將實際搜尋空間限制為具有欄位索引的日誌群組和日誌事件，使用 `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.1`欄位中包含 值`198.51.100.0`或 的日誌事件`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`
+ `@data_source_name`
+ `@data_source_type`
+ `@data_format`
+ `traceId`
+ `severityText`
+ `attributes.session.id`

CloudWatch Logs 也提供特定資料來源名稱和類型組合的預設欄位索引。預設欄位索引會自動用於下列資料來源名稱和類型組合：


| 資料來源名稱和類型 | 預設欄位索引 | 
| --- | --- | 
|  `amazon_vpc.flow`  |  `action` `logStatus` `region` `flowDirection` `type`  | 
|  `amazon_route53.resolver_query`  |  `query_type` `transport` `rcode`  | 
|  `aws_waf.access`  |  `action` `httpRequest.country`  | 
|  `aws_cloudtrail.data` ` aws_cloudtrail.management`  |  `eventSource` `eventName` `awsRegion` `userAgent` `errorCode` `eventType` `managementEvent` `readOnly` `eventCategory` `requestId`  | 

預設欄位索引是附加於您在政策中定義的任何自訂欄位索引。預設欄位索引不會計入您的[欄位索引配額](CloudWatchLogs-Field-Indexing-Syntax.md)。

## filterIndex 與篩選條件的比較
<a name="CWL_QuerySyntax-FilterIndex-Filter"></a>

若要說明 `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
```