Elasticsearch가 처음이신가요? Elasticsearch 입문용 웨비나에 참여하세요. 지금 무료 클라우드 체험을 시작하거나, 내 기기에서 Elastic을 사용해 볼 수 있습니다.
기존 인덱스의 기본 샤드 수는 늘릴 수 없으므로, 기본 샤드 수를 늘리려면 인덱스를 다시 생성해야 합니다. 이러한 상황에서 일반적으로 사용되는 메서드는 _reindex API와 _split API의 두 가지입니다.
split API는 _reindex API보다 더 빠른 방법인 경우가 많습니다. 두 작업 전에 인덱싱을 중지해야 하며, 그렇지 않으면 source_index와 target_index 문서 수가 달라집니다.

방법 1 - 분할 API 사용
분할 API는 설정을 복사하고 기존 인덱스를 매핑하여 원하는 기본 샤드 수로 새 인덱스를 생성하는 데 사용됩니다. 생성 시 원하는 기본 샤드 수를 설정할 수 있습니다. 분할 API를 구현하기 전에 다음 설정을 확인해야 합니다:
- 소스 인덱스는 읽기 전용이어야 합니다. 즉, 인덱싱 프로세스를 중지해야 합니다.
- 대상 인덱스의 기본 샤드 수는 소스 인덱스의 기본 샤드 수의 배수여야 합니다. 예를 들어, 소스 인덱스에 기본 샤드가 5개인 경우, 대상 인덱스 기본 샤드를 10,15,20 등으로 설정할 수 있습니다.
참고: 기본 샤드 번호만 변경해야 하는 경우, 재인덱스 API보다 훨씬 빠른 분할 API를 사용하는 것이 좋습니다.
분할 API 구현하기
테스트 인덱스를 만듭니다:
소스 인덱스는 읽기 전용이어야 분할할 수 있습니다:
설정 및 매핑은 소스 인덱스에서 자동으로 복사됩니다:
진행 상황을 확인할 수 있습니다:
설정과 매핑은 소스 인덱스에서 복사되므로 대상 인덱스는 읽기 전용입니다. 대상 인덱스에 대한 쓰기 작업을 활성화해 보겠습니다:
원본 인덱스를 삭제하기 전에 소스 및 대상 인덱스 docs.count를 확인하세요:
인덱스 이름과 별칭 이름은 같을 수 없습니다. 소스 인덱스를 삭제하고 소스 인덱스 이름을 대상 인덱스에 별칭으로 추가해야 합니다:
test_split_source 별칭을 test_split_target 인덱스에 추가한 후 이를 테스트해야 합니다:
방법 2 - 재인덱스 API 사용
리인덱스 API로 새 인덱스를 생성하면 기본 샤드 개수를 얼마든지 지정할 수 있습니다. 원하는 수의 기본 샤드로 새 인덱스를 생성한 후, 소스 인덱스의 모든 데이터를 이 새 인덱스로 다시 색인할 수 있습니다.
분할 API 기능 외에도, 재인덱스 AP의 ingest_pipeline을 사용하여 데이터를 조작할 수 있습니다. 수집 파이프라인을 사용하면 필터에 맞는 지정된 필드만 쿼리를 사용하여 대상 인덱스로 색인됩니다. 간편한 스크립트를 사용하여 데이터 콘텐츠를 변경할 수 있으며, 여러 인덱스를 단일 인덱스로 병합할 수 있습니다.
재색인 API 구현하기
테스트 재인덱스를 만듭니다:
소스 인덱스에서 설정 및 매핑을 복사합니다:
설정, 매핑, 원하는 샤드 수로 대상 인덱스를 생성합니다:
*주: number_of_replicas: 0, refresh_interval: -1로 설정하면 재인덱싱 속도가 빨라집니다.
재색인 프로세스를 시작합니다. requests_per_second=-1 및 slices=auto를 설정하면 재인덱스 속도가 조정됩니다.
재인덱스 API를 실행하면 task_id를 볼 수 있습니다. 이를 복사하여 _tasks API로 확인합니다:
재색인 작업이 완료된 후 설정을 업데이트합니다:
원본 인덱스를 삭제하기 전에 소스 인덱스와 대상 인덱스 docs.count를 확인하면 동일해야 합니다:
인덱스 이름과 별칭 이름은 같을 수 없습니다. 소스 인덱스를 삭제하고 소스 인덱스 이름을 대상 인덱스에 별칭으로 추가합니다:
test_split_source 별칭을 test_split_target 인덱스에 추가한 후 다음을 사용하여 테스트합니다:
요약
기존 인덱스의 기본 샤드 수를 늘리려면 새 인덱스에 대한 설정과 매핑을 다시 만들어야 합니다. 이를 위한 두 가지 주요 방법은 재색인 API와 분할 API입니다. 두 방법 중 하나를 사용하기 전에 활성 인덱싱을 중지해야 합니다.




