本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用遠端重新索引遷移 Amazon OpenSearch Service 索引
遠端重新索引可讓您將索引從一個 Amazon OpenSearch Service 網域複製到另一個網域。您可以從任何 OpenSearch 服務網域或自我管理的 OpenSearch 和 Elasticsearch 叢集遷移索引。
遠端網域和索引是指資料來源,或是您要從中複製資料的網域和索引。本機網域和索引是指資料的目標,或是您要複製資料的網域和索引。
遠端重新索引需要在本機網域上建立 OpenSearch 1.0 或更新版本,或 Elasticsearch 6.7 或更新版本。遠端網域必須與本機網域較低或相同主要版本。Elasticsearch 版本被視為低於 OpenSearch版本,這表示您可以將資料從 Elasticsearch 網域重新索引到 OpenSearch 網域。在相同的主要版本中,遠端網域可以是任何次要版本。例如,支援遠端從 Elasticsearch 7.10.x 重新索引至 7.9,但不支援將 Elasticsearch 7. OpenSearch 10.x 重新索引至 Elasticsearch 7.10.x。
注意
本文件說明如何在 Amazon OpenSearch Service 網域之間重新索引資料。如需 reindex
操作的完整文件,包括詳細步驟和支援的選項,請參閱 文件中的重新索引
主題
必要條件
遠端重新索引有以下要求:
-
遠端網域必須可從本機網域存取。對於位於 內的遠端網域VPC,本機網域必須具有 的存取權VPC。此程序會因網路組態而有所不同,但可能涉及連線至 VPN或 受管網路,或使用原生VPC端點連線。如需進一步了解,請參閱 在 中啟動 Amazon OpenSearch Service 網域 VPC。
-
請求必須像任何其他REST請求一樣,獲得遠端網域的授權。如果遠端網域已啟用精細存取控制,您必須具有在遠端網域上執行重新索引的許可,並讀取本機網域上的索引。如需更多安全性考量,請參閱 Amazon OpenSearch 服務中的精細訪問控制。
-
建議您在本機網域上建立具有所需設定的索引,然後再開始重新索引程序。
-
如果您的網域使用資料節點的 T2 或 T3 執行個體類型,則無法使用遠端重新索引。
在 OpenSearch 服務網際網路網域之間重新索引資料
最基本的情況是遠端索引與具有可公開存取端點的 AWS 區域 本機網域位於相同位置,而且您已簽署登入IAM資料。
從遠端網域中,指定要重新索引的遠端索引,以及要重新索引的本機索引:
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443" }, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
您必須在遠端網域端點的結尾新增 443,以進行驗證檢查。
若要驗證索引是否已複製到本機網域,請將此請求傳送至本機網域:
GET local_index/_search
如果遠端索引位於與本機網域不同的區域,請傳遞其區域名稱,例如在此範例請求中:
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443", "region": "eu-west-1" }, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
如果是隔離的區域,例如 AWS GovCloud (US) 或中國區域,端點可能無法存取,因為在這些區域中無法辨識您的IAM使用者。
如果遠端網域使用基本身分驗證進行保護,請指定使用者名稱和密碼:
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443", "username": "username
", "password": "password
" }, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
當遠端位於 時,在 OpenSearch 服務網域之間重新索引資料 VPC
每個 OpenSearch 服務網域都由自己的內部虛擬私有雲端 (VPC) 基礎設施組成。當您在現有的 OpenSearch 服務 中建立新網域時VPC,會為 中的每個資料節點建立彈性網路介面VPC。
由於遠端重新索引操作是從遠端 OpenSearch 服務網域執行,因此在自己的私有 內VPC,您需要一種方法來存取本機網域的 VPC。您可以使用內建VPC端點連線功能透過 建立連線 AWS PrivateLink,或設定代理來達成此目的。
如果您的本機網域使用 1 OpenSearch .0 版或更新版本,您可以使用 主控台或 AWS CLI 來建立 AWS PrivateLink 連線。 AWS PrivateLink 連線可讓本機 中的資源VPC私下連線到相同 VPC 內遠端中的資源 AWS 區域。
若要建立VPC端點連線,要重新索引的來源網域必須位於本機 中VPC,而來源和目的地網域必須位於相同的 中 AWS 區域。
您可以使用遠端重新索引與主控台,在共用VPC端點連線的兩個網域之間複製索引。
-
導覽至位於 的 Amazon OpenSearch Service 主控台https://console.aws.amazon.com/aos/
。 -
在左側導覽窗格中選擇 Domains (網域)。
-
選取本機網域,或您要複製資料的網域。這會開啟網域詳細資訊頁面。選擇一般資訊下方的連線索引標籤,然後選擇請求。
-
在請求連線頁面上,為您的連線模式選取VPC端點連線,然後輸入其他相關詳細資訊。這些詳細資訊包括遠端網域,這是您要從中複製資料的網域。然後,選擇 Request (請求)。
-
導覽至遠端網域的詳細資訊頁面,選擇連線索引標籤,然後尋找傳入連線資料表。選取剛剛從中建立連線的網域名稱 (本機網域) 旁的核取方塊。選擇 Approve (核准)。
-
瀏覽至本機網域,選擇 Connections (連線) 標籤,然後找到 Outbound connections (傳出連線) 資料表。兩個網域之間的連線處於作用中狀態之後,資料表 Endpoint (端點) 欄中的端點就會變為可用。複製端點。
-
開啟本機網域的儀表板,然後在左側導覽中選擇 Dev Tools (開發工具)。若要確認遠端網域索引尚未存在於您的本機網域上,請執行下列GET請求。將 取代
remote-domain-index-name
為您自己的索引名稱。GET
remote-domain-index-name
/_search { "query":{ "match_all":{} } }在輸出中,您應該會看到錯誤,指出找不到索引。
-
在您的GET請求下方,建立POST請求並使用端點做為遠端主機,如下所示。
POST _reindex { "source":{ "remote":{ "host":"
connection-endpoint
", "username":"username
", "password":"password
" }, "index":"remote-domain-index-name
" }, "dest":{ "index":"local-domain-index-name
" } }執行此請求。
-
再次執行GET請求。輸出現在應指出本機索引的存在。您可以查詢此索引,以確認 OpenSearch已複製遠端索引中的所有資料。
您可以搭配 使用遠端重新索引API,在共用VPC端點連線的兩個網域之間複製索引。
-
使用 CreateOutboundConnectionAPI操作請求從本機網域到遠端網域的新連線。
POST https://es.
region
.amazonaws.com/2021-01-01/opensearch/cc/outboundConnection { "ConnectionAlias": "remote-reindex-example", "ConnectionMode": "VPC_ENDPOINT", "LocalDomainInfo": { "AWSDomainInformation": { "DomainName": "local-domain-name
", "OwnerId": "aws-account-id
", "Region": "region
" } }, "RemoteDomainInfo": { "AWSDomainInformation": { "DomainName": "remote-domain-name
", "OwnerId": "aws-account-id
", "Region": "region
" } } }您會在回應
ConnectionId
中收到 。儲存此 ID 以用於下一個步驟。 -
使用 AcceptInboundConnectionAPI操作搭配您的連線 ID 來核准來自本機網域的請求。
PUT https://es.
region
.amazonaws.com/2021-01-01/opensearch/cc/inboundConnection/ConnectionId
/accept -
使用 DescribeOutboundConnectionsAPI操作來擷取遠端網域的端點。
{ "Connections": [ { "ConnectionAlias": "remote-reindex-example", "ConnectionId": "
connection-id
", "ConnectionMode": "VPC_ENDPOINT", "ConnectionProperties": { "Endpoint": "connection-endpoint
" }, ... } ] }儲存
connection-endpoint
以在步驟 5 中使用。 -
若要確認遠端網域索引尚未存在於您的本機網域上,請執行下列GET請求。將 取代
remote-domain-index-name
為您自己的索引名稱。GET
local-domain-endpoint
/remote-domain-index-name
/_search { "query":{ "match_all":{} } }在輸出中,您應該會看到錯誤,指出找不到索引。
-
建立 POST 請求,並將您的端點做為遠端主機使用,如下所示。
POST
local-domain-endpoint
/_reindex { "source":{ "remote":{ "host":"connection-endpoint
", "username":"username
", "password":"password
" }, "index":"remote-domain-index-name
" }, "dest":{ "index":"local-domain-index-name
" } }執行此請求。
-
再次執行GET請求。輸出現在應指出本機索引的存在。您可以查詢此索引,以確認 OpenSearch已複製遠端索引中的所有資料。
如果遠端網域託管在 內,VPC而您不想使用VPC端點連線功能,則必須使用可公開存取的端點設定代理。在這種情況下, OpenSearch Service 需要公有端點,因為它無法將流量傳送到您的 VPC。
當您在 VPC 模式下執行網域時,一或多個端點會放置在您的 中VPC。不過,這些端點僅適用於傳入 中網域的流量VPC,不允許流量傳入 VPC本身。
遠端重新索引命令是從本機網域執行,因此來源流量無法使用這些端點存取遠端網域。因此,在此使用案例中需要代理。代理網域必須擁有由公有憑證授權單位 (CA) 所簽署的憑證。不支援自我簽署或私有 CA 簽署憑證。
在非OpenSearch 服務網域之間重新索引資料
如果遠端索引託管在 OpenSearch Service 外部,例如在自我管理EC2執行個體中,請將 external
參數設定為 true
:
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443", "username": "username", "password": "password", "external": true }, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
在此情況下,僅支援具有使用者名稱和密碼的基本身分驗證。遠端網域必須具有可公開存取的端點 (即使與本機 OpenSearch 服務網域VPC位於相同位置),以及由公有 CA 簽署的憑證。不支援自我簽署或私有 CA 簽署憑證。
重新索引大型資料集
遠端重新索引會使用下列預設值將捲動請求傳送至遠端網域:
-
搜尋 5 分鐘內容
-
通訊端逾時 30 秒
-
批次大小為 1,000
我們建議您調整這些參數以容納您的資料。對於大型文件,請考慮較小的批次大小和/或較長的逾時。如需詳細資訊,請參閱捲動搜尋
POST _reindex?pretty=true&scroll=10h&wait_for_completion=false { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443", "socket_timeout": "60m" }, "size": 100, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
我們也建議將下列設定新增至本機索引,以獲得更好的效能:
PUT local_index { "settings": { "refresh_interval": -1, "number_of_replicas": 0 } }
重新索引程序完成後,您可以設定想要的複本數,並移除重新整理間隔設定。
若要僅重新索引您透過查詢選取的文件子集,請將此請求傳送至本機網域:
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443" }, "index": "remote_index
", "query": { "match": { "field_name": "text" } } }, "dest": { "index": "local_index
" } }
遠端重新索引不支援分割,因此您無法為同一個請求並行執行多個捲動操作。
遠端重新索引設定
除了標準重新索引選項之外, OpenSearch Service 還支援下列選項:
選項 | 有效值 | 描述 | 必要 |
---|---|---|---|
外部 | Boolean | 如果遠端網域不是 OpenSearch 服務網域,或者如果您要在兩個VPC網域之間重新建立索引,請指定 為 true 。 |
否 |
region | 字串 | 如果遠端網域位於不同的區域,請指定區域名稱。 | 否 |