本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 的生命周期都会根据 |
是 | |
preference |
指定用于执行搜索的节点或分片的字符串。 |
随机 | 否 |
routing |
指定将搜索请求传输到某个具体分片的字符串。 | 该文件的 _id |
否 |
expand_wildcards |
指定可以匹配通配符模式的索引类型的字符串。支持逗号分隔值。有效值如下所示:
|
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 设置
跨集群搜索
您可以跨集群创建 PIT、使用 PIT ID 搜索、列出 PIT 以及删除 PIT,但有以下几项限制:
-
您只能在源域上列出和删除所有 PIT。
-
作为跨群集搜索查询的一部分,您不能最大限度地减少网络往返行程。
有关更多信息,请参阅 在 Amazon OpenSearch Service 中执行跨集群搜索。
UltraWarm
使用 UltraWarm 索引的 PIT 搜索继续工作。有关更多信息,请参阅 Amazon OpenSearch Service 的 UltraWarm 存储。
注意
您可以在 CloudWatch 中监控 PIT 搜索统计信息。有关指标的完整列表,请参阅时间点指标。