本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon OpenSearch 服務中的時間點搜索
時間點 (PIT) 是一種搜尋類型,可讓您針對固定時間的資料集執行不同的查詢。一般而言,當您在不同時間點對相同索引執行相同的查詢時,您會收到不同的結果,因為文件會持續編製索引、更新和刪除。使用 PIT,您可以根據資料集的固定狀態進行查詢。
PIT 搜索的主要用途是將其與search_after
功能相結合。這是中的首選分頁方法 OpenSearch,特別是對於深度分頁,因為它在時間凍結的數據集上運行,它不綁定到查詢,並且它支持一致的分頁向前和向後。您可以將 PIT 與運行 OpenSearch 版本 2.5 的域一起使用。
注意
本主題提供 PIT 的概觀,以及在受管 Amazon Ser OpenSearch vice 網域而非自我管理 OpenSearch 叢集上使用時需要考量的一些事項。有關 PIT 的完整文檔,包括全面的 API 參考,請參閱開源 OpenSearch 文檔中的時間點
考量事項
設定 PIT 搜尋時,請考慮下列事項:
-
如果您要從執行 2.3 OpenSearch 版的網域進行升級,並且需要對 PIT 動作進行精細的存取控制,則需要手動新增這些動作和角色。
-
沒有 PIT 的復原能力。節點重新啟動、節點終止、藍/綠部署和 OpenSearch 處理序重新啟動會導致所有 PIT 資料遺失。
-
如果碎片在藍/綠部署期間重新定位,則只有即時資料區段會傳輸到新節點。PIT 持有的碎片段(獨家和與實時數據共享的碎片)保留在舊節點上。
-
PIT 搜尋目前不適用於非同步搜尋。
創建一個坑
若要執行 PIT 查詢,請_search/point_in_time
使用下列格式將 HTTP 要求傳送至:
POST
opensearch-domain
/my-index
/_search/point_in_time?keep_alive=time
您可以指定下列 PIT 選項:
選項 | 描述 | 預設值 | 必要 |
---|---|---|---|
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 支援精細的存取控制。如果您要升級到 2.5 OpenSearch 版網域,且需要精細的存取控制,則需要手動建立具有下列權限的角色:
# 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 文件中的安全性模型
進地坑設置
OpenSearch 可讓您使用 _cluster/settings
API 變更所有可用的 PIT 設定
跨叢集搜尋
您可以建立 PIT、使用 PIT ID 進行搜尋、列出 PIT,以及刪除叢集間的 PIT,但有下列次要限制:
-
您只能列出來源網域上的所有 PIT 並刪除所有 PIT。
-
您無法將網路往返次數降到最低,作為跨叢集搜尋查詢的一部分。
如需詳細資訊,請參閱 Amazon OpenSearch 服務中的跨群集搜索。
UltraWarm
使用 UltraWarm 索引進行 PIT 搜尋繼續運作。如需詳細資訊,請參閱 UltraWarm Amazon OpenSearch Service 的 儲存。
注意
您可以在中監視 PIT 搜尋統計資料 CloudWatch。如需指標的完整清單,請參閱 時間點指標。