在 Amazon OpenSearch Service 中使用直接查询的建议
本页面提供使用 Amazon OpenSearch Service 直接查询分析来自 CloudWatch 日志、Amazon S3 和 Amazon Security Lake 数据的建议。这些最佳实践可帮助您优化性能并确保高效查询,无需进行数据摄取或数据复制。
一般建议
在使用直接查询功能时,建议执行以下操作:
-
使用
COALESCE SQL函数处理缺失的列并确保返回结果。
-
使用查询限制来确保不会提取太多数据。
-
如果计划多次分析同一数据集,请创建索引视图将数据完整导入并索引至OpenSearch,完成分析后即可删除该视图。
-
不再需要加速作业和索引时将其丢弃。
-
不支持包含仅大小写不同的相同字段名(例如
field1和FIELD1)的查询。例如,不支持以下查询:
Select AWSAccountId, AwsAccountId from LogGroup Select a.@LogStream, b.@logStream from Table A INNER Join Table B ona.id = b.id然而,由于两个日志组中的字段名(@logStream)完全相同,因此支持以下查询:
Select a.@logStream, b.@logStream from Table A INNER Join Table B on a.id = b.id -
函数和表达式必须对字段名进行操作,并作为包含在
FROM子句中指定日志组的SELECT语句的一部分。例如,不支持此查询:
SELECT cos(10) FROM LogGroup支持此查询:
SELECT cos(field1) FROM LogGroup
Amazon S3 建议
如果使用 Amazon OpenSearch Service 直接查询 Amazon S3 中的数据,我们还建议您采取以下措施:
-
使用年、月、日、小时的分区格式将数据摄取到 Amazon S3 中,以加快查询速度。
-
构建跳过索引时,对基数高的字段使用 Bloom 筛选器,对取值范围较大的字段使用最小值/最大值索引。对于高基数字段,建议采用基于值的方法以提升查询效率。
-
使用索引状态管理以维持实体化视图和覆盖索引所需的存储。
CloudWatch Logs 建议
如果使用 Amazon OpenSearch Service 直接查询 CloudWatch Logs 中的数据,我们还建议您采取以下措施:
-
在单个查询中搜索多个日志组时,请使用相应的语法。有关更多信息,请参阅 多日志组函数。
-
使用 SQL 或 PPL 命令时,需将特定字段用反引号括起来才能成功查询。包含特殊字符(非字母和非数字)的字段需要使用反引号。例如,对
@message、Operation.Export,和Test::Field使用反引号。纯字母名称的列无需使用反引号。包含简单字段的查询示例:
SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;附加反引号的类似查询:
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;
Security Lake 建议
如果使用 Amazon OpenSearch Service 直接查询 Security Lake 中的数据,我们还建议您采取以下措施:
-
检查 Security Lake 状态,确保其运行顺畅且无任何问题。有关详细的故障排除步骤,请参阅《Amazon Security Lake 用户指南》中的数据湖状态故障排除。
-
验证查询访问权限:
-
如果您使用与 Security Lake 委派管理员账户不同的账户查询 Security Lake,则在 Security Lake 中设置具有查询权限的订阅用户。
-
如果您使用同一账户查询 Security Lake,请检查 Security Lake 中是否有关于通过 LakeFormation 注册托管 S3 存储桶的提示信息。
-
-
浏览查询模板和预构建控制面板,快速开始分析。
-
熟悉开放式网络安全架构框架(OCSF)和 Security Lake:
-
查看 OCSF GitHub
存储库中 AWS 来源的架构映射示例 -
通过访问 AWS 源版本 2(OCSF 1.1.0)的 Security Lake 查询,了解如何有效查询 Security Lake
-
使用分区提高查询性能:
accountid、region和time_dt
-
-
熟悉 SQL 语法,Security Lake 支持使用该语法进行查询。有关更多信息,请参阅 支持的 OpenSearch SQL 命令和函数。