

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建字段索引以提高查询性能并减少扫描量
<a name="CloudWatchLogs-Field-Indexing"></a>

您可以为日志事件中的字段创建*字段索引*，以便高效地进行基于等式的搜索。然后，当您在 L CloudWatch ogs Insights 查询中使用字段索引时，该查询会尝试跳过处理已知不包含索引字段的日志事件。这样可以减少使用字段索引的查询的扫描量，从而更快地返回结果。这可以帮助您快速搜索数千个日志组中 PB 级的总日志，并更快地找到相关日志。适合编制索引的字段是您经常需要查询的字段。具有高基数值的字段也是字段索引的良好候选对象，因为使用这些字段索引的查询限制了与目标值匹配的日志事件，因此会更快完成。

例如，假设您为 `requestId` 创建了一个字段索引。然后，针对该日志组的任何 CloudWatch Logs Insights 查询，该查询包含`requestId = value`或`requestId IN [value, value, ...]`将尝试仅处理已知包含该索引字段和查询值的 CloudWatch 日志事件，而且 Logs 过去已检测到该字段的值。

您还可以利用字段索引来创建对大量日志组的高效查询。当您在查询中使用 `filterIndex` 命令而不是 `filter` 命令时，查询将针对具有字段索引的日志事件的选定日志组运行。这些查询最多可以扫描 10,000 个日志组，您可以通过指定最多五个日志组名称前缀进行选择。如果这是 CloudWatch 跨账户可观察性的监控账户，则可以选择所有源账户或指定单个源账户来选择日志组”。

索引字段区分大小写。例如，字段索引 `RequestId` 将无法匹配包含 `requestId` 的日志事件。

仅 JSON 和服务日志的结构化日志格式支持字段索引。

CloudWatch 日志为标准日志类中的所有日志组提供默认字段索引。默认字段索引可自动用于以下字段：
+ `@logStream`
+ `@aws.region`
+ `@aws.account`
+ `@source.log`
+ `@data_source_name`
+ `@data_source_type`
+ `@data_format`
+ `traceId`
+ `severityText`
+ `attributes.session.id`

CloudWatch 日志还为某些数据源名称和类型组合提供默认字段索引。默认字段索引自动适用于以下数据源名称和类型组合：


| 数据源名称和类型 | 默认字段索引 | 
| --- | --- | 
|  `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)。

CloudWatch 仅记录创建索引策略后提取的日志事件的索引。它不会对创建策略之前摄取的日志事件编制索引。创建字段索引后，每个匹配的日志事件将从日志事件的摄取时间起保留编制索引 30 天。

**注意**  
如果您在监控账户中创建了一个字段索引策略，则该策略不会用于关联源账户中的日志组。字段索引策略仅适用于创建该策略的账户。

本节的其余主题介绍了如何创建字段索引。有关如何在查询中引用字段索引的信息，请参阅 [filterIndex](CWL_QuerySyntax-FilterIndex.md) 和 [筛选](CWL_QuerySyntax-Filter.md)。

**Topics**
+ [字段索引语法和配额](CloudWatchLogs-Field-Indexing-Syntax.md)
+ [创建账户级字段索引策略](CloudWatchLogs-Field-Indexing-CreateAccountLevel.md)
+ [创建日志组级字段索引策略](CloudWatchLogs-Field-Indexing-CreateLogGroupLevel.md)
+ [创建查询时的日志组选择选项](Field-Indexing-Selection.md)
+ [删除字段索引策略的影响](CloudWatchLogs-Field-Indexing-Deletion.md)