You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudWatch Logs Insights如何实现多关键词不区分大小写的日志过滤

解决方案

你原有写法里的any(关键词数组) in log只能匹配存在任意一个关键词的日志,要实现不区分大小写、不限词序、筛选存在至少2个预定义关键词的日志,可以用以下两种方案:

方案1:正则实现(兼容你原有like语法)

如果你的查询引擎支持正则前瞻,直接用以下语法即可:

  • 允许同一关键词重复出现2次即判定为符合条件:
FILTER log like /(?i)(?=.*\b(alter|create|drop if exists)\b)(?=.*\b(alter|create|drop if exists)\b)/
  • 要求必须匹配2个不同的关键词才判定为符合条件,调整正则如下:
FILTER log like /(?i)(?=.*\b(alter|create|drop if exists)\b)(?=.*\b(?!\1)(alter|create|drop if exists)\b)/

说明:\b是单词边界符,可避免关键词嵌入其他单词时被误匹配(比如alteration里的alter不会被识别),如果不需要精准匹配整词可以删掉\b。

方案2:数组函数实现(更易维护,适合关键词较多的场景)

如果你的查询引擎支持字符串处理和数组函数(如ClickHouse、Spark SQL、Databend等),可以用更易读的写法,后续新增关键词只需要修改数组内容即可:

FILTER 
  -- 统计匹配到的关键词数量,≥2则保留日志
  length(
    arrayFilter(
      keyword -> position(lower(log), lower(keyword)) > 0,
      -- 预定义关键词列表,直接增删元素即可调整规则
      ['alter', 'create', 'drop if exists']
    )
  ) >= 2

说明:通过lower()统一转小写实现不区分大小写匹配,不需要调整正则语法,规则修改成本更低。

内容的提问来源于stack exchange,提问作者aalma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:12:04