기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
원격 재인덱스를 사용하여 Amazon OpenSearch Service 인덱스 마이그레이션
원격 재인덱스를 사용하면 한 Amazon OpenSearch Service 도메인에서 다른 도메인으로 인덱스를 복사할 수 있습니다. OpenSearch Service 도메인이나 자체 관리형 OpenSearch 및 Elasticsearch 클러스터에서 인덱스를 마이그레이션할 수 있습니다.
원격 도메인 및 인덱스는 데이터 원본 또는 데이터를 복사하려는 도메인과 인덱스를 나타냅니다. 로컬 도메인 및 인덱스는 데이터 대상 또는 데이터를 복사하려는 도메인과 인덱스를 나타냅니다.
원격 인덱싱을 사용하려면 로컬 도메인에서 OpenSearch 1.0 이상 또는 Elasticsearch 6.7 이상이 필요합니다. 원격 도메인의 메이저 버전은 로컬 도메인보다 더 낮거나 대상 도메인과 동일해야 합니다. Elasticsearch 버전은 OpenSearch 버전보다 낮은 것이 좋습니다. 즉, Elasticsearch 도메인에서 OpenSearch 도메인으로 데이터를 재인덱스할 수 있습니다. 동일한 메이저 버전 내에서 원격 도메인은 마이너 버전이 될 수 있습니다. 예를 들어 Elasticsearch 7.10.x에서 7.9로 원격 재인덱싱은 지원되지만 OpenSearch 1.0에서 Elasticsearch 7.10.x로의 원격 재인덱싱은 지원되지 않습니다.
참고
이 설명서에서는 Amazon OpenSearch Service 도메인 사이에서 데이터를 다시 인덱싱하는 방법을 설명합니다. 자세한 단계 및 지원되는 옵션을 비롯한 reindex
작업에 대한 전체 설명서는 OpenSearch 설명서의 Reindex document
주제
사전 조건
원격 재인덱스의 요구 사항은 다음과 같습니다.
-
원격 도메인은 로컬 도메인에서 액세스할 수 있어야 합니다. VPC에 상주하는 원격 도메인의 경우, 로컬 도메인이 VPC에 액세스할 수 있어야 합니다. 이 프로세스는 네트워크 구성에 따라 다르지만, VPN 또는 관리형 네트워크 연결 또는 네이티브 VPC 엔드포인트 연결 사용이 필요할 수 있습니다. 자세한 내용은 내에서 Amazon OpenSearch Service 도메인 시작 VPC을 참조하십시오.
-
요청은 다른 REST 요청과 마찬가지로 원격 도메인에서 승인해야 합니다. 원격 도메인에 세분화된 액세스 제어가 활성화된 경우, 원격 도메인에서 재인덱스를 수행하고 로컬 도메인의 인덱스를 읽을 수 있는 권한이 있어야 합니다. 보안 고려 사항에 대한 자세한 내용은 Amazon OpenSearch Service에서 세분화된 액세스 제어 단원을 고려하세요.
-
재인덱스 프로세스를 시작하기 전에 로컬 도메인에서 원하는 설정으로 인덱스를 생성하는 것이 좋습니다.
-
도메인에서 데이터 노드에 T2 또는 T3 인스턴스 유형을 사용하는 경우, 원격 재인덱스를 사용할 수 없습니다.
OpenSearch Service 인터넷 도메인 간의 데이터 재인덱스
가장 기본적인 시나리오는 원격 인덱스가 공개적으로 액세스할 수 있는 엔드포인트가 있는 로컬 도메인과 동일한 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
" } }
원격이 VPC에 있을 때 OpenSearch Service 도메인 간의 데이터 재인덱스
모든 OpenSearch Service 도메인은 자체 내부 Virtual Private Cloud(VPC) 인프라로 구성됩니다. 기존 OpenSearch Service VPC에 새 도메인을 생성하면 VPC의 각 데이터 노드에 대해 탄력적인 네트워크 인터페이스가 생성됩니다.
원격 재인덱스 작업은 원격 OpenSearch Service 도메인에서 수행되므로 자체 프라이빗 VPC 내에서 수행되기 때문에 로컬 도메인의 VPC에 액세스할 방법이 필요합니다. 내장된 VPC 엔드포인트 연결 기능을 사용하여 AWS PrivateLink을 통한 연결을 설정하거나 프록시를 구성하여 이 작업을 수행할 수 있습니다.
로컬 도메인에서 OpenSearch 버전 1.0 이상을 사용하는 경우 콘솔 또는 AWS CLI를 사용하여 AWS PrivateLink 연결을 생성할 수 있습니다. AWS PrivateLink 연결을 사용하면 로컬 VPC의 리소스가 동일한 AWS 리전 내에서 원격 VPC의 리소스에 비공개로 연결할 수 있습니다.
콘솔로 원격 재인덱싱을 사용하여 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 엔드포인트 연결을 공유하는 두 도메인 간에 인덱스를 복사할 수 있습니다.
-
CreateOutboundConnection API 작업을 사용하여 로컬 도메인에서 원격 도메인으로의 새 연결을 요청하세요.
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를 저장합니다. -
연결 ID로 AcceptInboundConnection API 작업을 사용하여 로컬 도메인의 요청을 승인하세요.
PUT https://es.
region
.amazonaws.com/2021-01-01/opensearch/cc/inboundConnection/ConnectionId
/accept -
DescribeOutboundConnections API 작업을 사용하여 원격 도메인의 엔드포인트를 검색하세요.
{ "Connections": [ { "ConnectionAlias": "remote-reindex-example", "ConnectionId": "
connection-id
", "ConnectionMode": "VPC_ENDPOINT", "ConnectionProperties": { "Endpoint": "connection-endpoint
" }, ... } ] }5단계에서 사용할
connection-endpoint
를 저장합니다. -
원격 도메인 인덱스가 아직 로컬 도메인에 존재하지 않는지 확인하려면 다음 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 Service 도메인 간 데이터 재인덱스
원격 인덱스가 자체 관리형 EC2 인스턴스에서와 같이 OpenSearch 서비스 외부에서 호스팅되는 경우 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 Service 도메인과 동일한 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는 표준 재인덱싱 옵션 외에도 다음 옵션을 지원합니다.
옵션 | 유효값 | 설명 | 필수 |
---|---|---|---|
외부 | 불 | 원격 도메인이 OpenSearch Service 도메인이 아니거나 2개의 VPC 도메인 사이에서 재인덱싱하는 경우 true 로 지정하세요. |
아니요 |
리전 | String | 원격 도메인이 다른 리전에 있는 경우 리전 이름을 지정하세요. | 아니요 |