关于在 Amazon OpenSearch 服务中使用直接查询的建议 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

关于在 Amazon OpenSearch 服务中使用直接查询的建议

本页提供了使用亚马逊 OpenSearch 服务直接查询来分析来自 CloudWatch 日志、Amazon S3 和亚马逊安全湖的数据的建议。这些最佳实践可帮助您优化性能并确保高效查询,而无需摄取或复制数据。

一般建议

在使用直接查询功能时,建议执行以下操作:

  • 使用该COALESCE SQL函数来处理缺失的列并确保返回结果。

  • 使用查询限制来确保不会提取太多数据。

  • 如果您计划多次分析同一个数据集,请创建一个索引视图,以便在完成分析后将数据完全摄取 OpenSearch 和索引,然后将其丢弃。

  • 不再需要加速作业和索引时将其丢弃。

  • 不支持包含相同但仅在大小写上有所不同(例如field1FIELD1)的字段名称的查询。

    例如,不支持以下查询:

    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
  • 函数和表达式必须对字段名进行操作,并且是SELECT语句的一部分,该语FROM句中指定了日志组。

    例如,不支持此查询:

    SELECT cos(10) FROM LogGroup

    支持此查询:

    SELECT cos(field1) FROM LogGroup

Amazon S3 建议

如果您使用 Amazon Ser OpenSearch vice 来指导对 Amazon S3 中的数据进行查询,则我们还建议您采用以下各项:

  • 使用年、月、日、小时的分区格式将数据摄取到 Amazon S3 中,以加快查询速度。

  • 构建跳过索引时,使用 Bloom 筛选器来实现高基数特性的字段,使用最小/最大索引来表示具有大值范围的字段。对于高基数字段,可以考虑使用基于值的方法来提高查询效率。

  • 使用索引状态管理来维持实体化视图和覆盖索引所需的存储。

CloudWatch 日志推荐

如果您使用 Amazon Ser OpenSearch vice 在 CloudWatch 日志中引导查询数据,我们还建议您采取以下措施:

  • 在一个查询中搜索多个日志组时,请使用适当的语法。有关更多信息,请参阅 多日志组函数

  • 使用 SQL 或 PPL 命令时,请将某些字段用反引号括起来,以便成功查询它们。带有特殊字符(非字母和非数字)的字段需要使用反引号。例如,用反引号@messageOperation.Export,起来、和Test::Field。您无需用反引号将纯字母名称的列括起来。

    包含简单字段的查询示例:

    SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;

    附加了反引号的类似查询:

    SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;

Security La

如果您使用亚马逊 OpenSearch 服务在安全湖中直接查询数据,我们还建议您采取以下措施: