

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

 `filterIndex` を使用してインデックス付きデータのみを返すには、クエリで指定したフィールドでインデックス付けされたロググループのみをスキャンするようクエリに強制します。このフィールドでインデックス付けされるこれらのロググループの場合、インデックス付けされたフィールドのクエリで指定されたフィールドを含む任意のログイベントを持たないロググループをスキップすることで、クエリがさらに最適化されます。さらに、このフィールドインデックスのクエリで指定された値に一致するこれらのロググループのログイベントのみをスキャンしようとすることで、スキャンされるボリュームが減少します。フィールドインデックスおよびその作成方法の詳細については「[フィールドインデックスを作成してクエリパフォーマンスを改善し、スキャン量を削減する](CloudWatchLogs-Field-Indexing.md)」を参照してください。

インデックス付きフィールドで `filterIndex` を使用すると、フィールドインデックスを持つロググループとログイベントに実際の検索スペースを制限することで、ペタバイトのログデータを含むロググループを効率的にクエリできます。

例えば、アカウントの一部のロググループで `IPaddress` のフィールドインデックスを作成したとします。その後、次のクエリを作成してアカウント内のすべてのロググループをクエリし、`IPaddress` フィールドの値 `198.51.100.0` を含むログイベントを検索できます。

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

`filterIndex` コマンドにより、このクエリは `IPaddress` においてインデックス付けされていないすべてのロググループのスキップを試みます。さらに、インデックス付けされたロググループ内で、クエリは `IPaddress` フィールドを持つもののそのフィールドの値として `198.51.100.0` が観測されないログイベントをスキップします。

`IN` 演算子を使用して、インデックス付きフィールドの複数の値のいずれかに結果を展開します。次の例では、`IPaddress` フィールドで値 `198.51.100.0` または `198.51.100.1` を含むログイベントを検索します。

```
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 と filter の比較
<a name="CWL_QuerySyntax-FilterIndex-Filter"></a>

`filterIndex` と `filter` の違いを説明するために、次のクエリ例を検討してください。`IPaddress` のフィールドインデックスを 4 つのロググループ向けに作成したものの、5 番目のロググループには作成していないとします。`filterIndex` を使用する次のクエリは、フィールドのインデックスが付けられていないロググループのスキャンをスキップします。インデックス付きロググループごとに、インデックス付きフィールドを持つログイベントのみのスキャンを試行します。また、フィールドインデックスの作成後からの結果のみを返します。

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

対照的に、同じ 5 つのロググループのクエリに `filterIndex` の代わりに `filter` を使用する場合、クエリはインデックス付きロググループの値を含むログイベントだけではなく、インデックス化されていない 5 番目のロググループもスキャンし、その 5 番目のロググループ内のすべてのログイベントをスキャンします。

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