本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
FilterIndex
用于仅filterIndex返回已编入索引的数据,方法是强制查询仅扫描在查询中指定的字段上已编入索引的日志组。对于在此字段上建立索引的这些日志组,它会跳过任何不包含索引字段查询中指定的字段的日志事件的日志组,从而进一步优化查询。它尝试仅扫描这些日志组中与该字段索引查询中指定的值相匹配的日志事件,从而进一步减少扫描量。有关字段索引及其创建方法的更多信息,请参阅创建字段索引以提高查询性能并减少扫描量。
使用索引字段可以将实际搜索空间限制为filterIndex具有字段索引的日志组和日志事件,从而帮助您有效地查询包含数 PB 日志数据的日志组。
例如,假设您已在账户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运算符将索引字段的结果扩展为多个值中的任意一个。以下示例查找包含值198.51.100.0或IPaddress字段198.51.100.1中的日志事件。
fields @timestamp, @message | filterIndex IPaddress in ["198.51.100.0", "198.51.100.1"] | limit 20
CloudWatch 日志为标准日志类中的所有日志组提供默认字段索引。默认字段索引自动适用于以下字段:
-
@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