筛选
使用 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
筛选命令中的匹配项和正则表达式
筛选条件支持使用正则表达式。您可以使用以下比较运算符(=
、!=
、<
、<=
、>
、>=
)和布尔运算符(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.*/
可能的匹配项可以采用以下格式:
-
ServiceLogSampleApiLogGroup
-
SampleApiLogGroupServiceLog
示例:从匹配项中排除子字符串
下面的示例将显示一个查询,它将返回 f1
不包含单词 Exception 的多个录入事件。此示例区分大小写。
fields f1, f2, f3 | filter f1 not like "Exception"
示例:使用不区分大小写的模式匹配子字符串
您可以使用 like
和正则表达式匹配不区分大小写的子字符串。在您要匹配的子字符串前放置以下参数 (?i)。下面的示例将显示一个查询,它将返回 f1
包含单词 Exception 或 exception 的多个录入事件。
fields f1, f2, f3 | filter f1 like /(?i)Exception/