Amazon OpenSearch Service 中的时间点搜索 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon OpenSearch Service 中的时间点搜索

时间点(PIT)是一种搜索类型,可让您对固定时间的数据集运行不同的查询。通常,当您在不同的时间点对同一个索引运行相同的查询时,由于文档会不断被索引、更新和删除,所以会收到不同的结果。使用 PIT,您可以根据数据集的恒定状态进行查询。

PIT 搜索的主要用途是与 search_after 功能结合使用。这是 OpenSearch 中的首选分页方法,特别是对于深度分页,因为它对冻结时间的数据集进行操作,未绑定到查询,并且支持向前和向后的一致分页。您可以在运行 OpenSearch 版本 2.5 的域中使用 PIT。

注意

本主题概述了 PIT,以及在托管式 Amazon OpenSearch Service 域(而不是在自主管理型 OpenSearch 集群)上使用 PIT 时的一些注意事项。有关 PIT 的完整文档,包括全面的 API 参考,请参阅开源 OpenSearch 文档中的 Point in Time

注意事项

在配置 PIT 搜索时,请考虑以下事项:

  • 如果从运行 OpenSearch 版本 2.3 的域升级,并且需要对 PIT 操作执行精细访问控制,则需要手动添加这些操作和角色。

  • PIT 没有弹性。节点重启、节点终止、蓝绿部署和 OpenSearch 进程重启会导致所有 PIT 数据丢失。

  • 如果分片在蓝绿部署期间重新定位,则仅将实时数据段传输到新节点。PIT 持有的分片段(包括独占分片和与实时数据共享的分片)仍保留在旧节点上。

  • PIT 搜索目前不适用于异步搜索。

创建 PIT

要运行 PIT 查询,请使用以下格式将 HTTP 请求发送至 _search/point_in_time

POST opensearch-domain/my-index/_search/point_in_time?keep_alive=time

可以指定以下 PIT 选项:

Options 描述 默认值 必需
keep_alive

保留 PIT 的时间长度。每次使用搜索请求访问 PIT 时,PIT 的生命周期都会根据 keep_alive 参数的时间长度延长。创建 PIT 时此查询参数是必需的,但在搜索请求中则是可选的。

preference

指定用于执行搜索的节点或分片的字符串。

随机
routing 指定将搜索请求传输到某个具体分片的字符串。 该文件的 _id
expand_wildcards 指定可以匹配通配符模式的索引类型的字符串。支持逗号分隔值。有效值如下所示:
  • all:匹配任何索引或数据流,包括隐藏的索引或数据流。

  • open:匹配开放的、非隐藏的索引或非隐藏的数据流。

  • closed:匹配封闭的、非隐藏的索引或非隐藏的数据流。

  • hidden:匹配隐藏的索引或数据流。必须与开放和/或封闭结合。

  • none:不接受通配符模式。

open
allow_partial_pit_creation 用于指定是否创建部分失败的 PIT 的布尔值。 true

示例响应

{ "pit_id": "o463QQEPbXktaW5kZXgtMDAwMDAxFnNOWU43ckt3U3IyaFVpbGE1UWEtMncAFjFyeXBsRGJmVFM2RTB6eVg1aVVqQncAAAAAAAAAAAIWcDVrM3ZIX0pRNS1XejE5YXRPRFhzUQEWc05ZTjdyS3dTcjJoVWlsYTVRYS0ydwAA", "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "creation_time": 1658146050064 }

当您创建 PIT 时,您会在响应中收到 PIT ID。这是您用来通过 PIT 进行搜索的 ID。

时间点权限

PIT 支持精细访问控制。如果您要升级到 OpenSearch 版本 2.5 的域并且需要精细访问控制,则需要手动创建具有以下权限的角色:

# Allows users to use all point in time search search functionality point_in_time_full_access: reserved: true index_permissions: - index_patterns: - '*' allowed_actions: - "indices:data/read/point_in_time/create" - "indices:data/read/point_in_time/delete" - "indices:data/read/point_in_time/readall" - "indices:data/read/search" - "indices:monitor/point_in_time/segments" # Allows users to use point in time search search functionality for specific index # All type operations like list all PITs, delete all PITs are not supported in this case point_in_time_index_access: reserved: true index_permissions: - index_patterns: - 'my-index-1' allowed_actions: - "indices:data/read/point_in_time/create" - "indices:data/read/point_in_time/delete" - "indices:data/read/search" - "indices:monitor/point_in_time/segments"

对于使用 OpenSearch 版本 2.5 及更高版本的域,您可以使用内置的 point_in_time_full_access 角色。有关更多信息,请参阅 OpenSearch 文档中的日志

PIT 设置

OpenSearch 允许您使用 _cluster/settings API 更改所有可用的 PIT 设置。在 OpenSearch Service 中,您当前无法修改设置。

跨集群搜索

您可以跨集群创建 PIT、使用 PIT ID 搜索、列出 PIT 以及删除 PIT,但有以下几项限制:

  • 您只能在源域上列出和删除所有 PIT。

  • 作为跨群集搜索查询的一部分,您不能最大限度地减少网络往返行程。

有关更多信息,请参阅 在 Amazon OpenSearch Service 中执行跨集群搜索

UltraWarm

使用 UltraWarm 索引的 PIT 搜索继续工作。有关更多信息,请参阅 Amazon OpenSearch Service 的 UltraWarm 存储

注意

您可以在 CloudWatch 中监控 PIT 搜索统计信息。有关指标的完整列表,请参阅时间点指标