本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
筛选
使用
filter
获取与一个或多个条件匹配的日志事件。
示例:使用一个条件筛选日志事件
该代码片段显示了一个查询示例,其将返回
range
的值大于
3000
的所有日志事件。该查询将结果限制为 20 个日志事件,并按
@timestamp
和降序对日志事件进行排序。
fields @timestamp, @message | filter (range>3000) | sort @timestamp desc | limit 20
示例:使用多个条件筛选日志事件
您可以使用关键字
and
和
or
组合多个条件。
该代码片段显示了一个查询示例,其将返回
range
的值大于
3000
以及
accountId
的值等于
123456789012
的日志事件。该查询将结果限制为 20 个日志事件,并按
@timestamp
和降序对日志事件进行排序。
fields @timestamp, @message | filter (range>3000 and accountId=123456789012) | sort @timestamp desc | limit 20
已编入索引的字段和筛选器命令
如果您为日志组创建了字段索引,则可以利用这些字段索引来提高
filter
查询效率并减少扫描量。例如,假设您已创建了一个字段索引
requestId
。然后,针对该日志组的任何 CloudWatch Logs Insights 查询,如果这些查询包含
filter requestId =
或
value
filter requestId IN [
将尝试跳过处理已知不包含索引字段的日志事件。通过尝试仅扫描已知包含该索引字段的日志事件,可以减少扫描量并加快查询速度。
value
,
value
, ...]
有关字段索引以及如何创建它们的更多信息,请参阅 创建字段索引来提高查询性能并减少扫描量 。
重要
只有带有
filter
和的查询
fieldName
=...
filter
才能受益于字段索引的改进。带有的查询
fieldName
IN...
filter
不使用索引,并且始终扫描所选日志组中的所有日志事件。
fieldName
like
示例:使用索引查找与特定请求 ID 相关的日志事件
此示例假定您已在上创建了一个字段索引
requestId
。对于使用此字段索引的日志组,该查询将利用字段索引尝试扫描最少量的日志事件,以查找值为的事件
requestId
123456
fields @timestamp, @message | filter requestId = "1234656" | limit 20
筛选命令中的匹配项和正则表达式
筛选条件支持使用正则表达式。您可以使用以下比较运算符(
=
、
!=
、
<
、
<=
、
>
、
>=
)和布尔运算符(
and
、
or
和
not
)。
您可以使用关键字
in
来测试集合成员资格并检查数组中的元素。要检查数组中的元素,请将该数组放在
in
之后。您可以将布尔运算符
not
与
in
配合使用。您可以创建查询,它们使用
in
返回字段是字符串匹配项的录入事件。这些字段必须是完整字符串。例如,下面的代码片段显示了一个查询,它使用
in
返回字段
logGroup
是完整字符串
example_group
的录入事件。
fields @timestamp, @message | filter logGroup in ["example_group"]
您可以使用关键字短语
like
和
not
like
以匹配子字符串。您可以使用正则表达式运算符
=~
以匹配子字符串。要使用
like
和
not like
匹配子字符串,请将您要匹配的子字符串括在单引号或双引号中。您可以将正则表达式模式与
like
和
not
like
配合使用。要使用正则表达式运算符匹配子字符串,请将您要匹配的子字符串括在正斜杠中。下面的示例包含多个代码片段,它们展示您如何能够使用
filter
命令匹配子字符串。
示例:匹配子字符串
以下示例将返回
f1
包含单词
Exception
的录入事件。所有三个示例都区分大小写。
第一个示例使用
like
匹配子字符串。
fields f1, f2, f3 | filter f1 like "Exception"
第二个示例使用
like
和正则表达式模式匹配子字符串。
fields f1, f2, f3 | filter f1 like /Exception/
第三个示例使用正则表达式匹配子字符串。
fields f1, f2, f3 | filter f1 =~ /Exception/
示例:使用通配符匹配子字符串
您可以使用句点符号 (
.
) 作为正则表达式中的通配符来匹配子字符串。在以下示例中,查询返回
f1
的值以字符串
ServiceLog
开头的匹配项。
fields f1, f2, f3 | filter f1 like /ServiceLog./
您可以在句点符号 (
.*
) 之后放置星号,以创建一个返回尽可能多的匹配项的贪婪量词。例如,以下查询将返回
f1
的值不仅以字符串
ServiceLog
开头并且还包括字符串
ServiceLog
的匹配项。
fields f1, f2, f3 | filter f1 like /ServiceLog.*/
可能的匹配项可以采用以下格式:
示例:使用不区分大小写的模式匹配子字符串
您可以使用
like
和正则表达式匹配不区分大小写的子字符串。在您要匹配的子字符串前放置以下参数 (
?i
)。下面的示例将显示一个查询,它将返回
f1
包含单词
Exception
或
exception
的多个录入事件。