Elasticsearch 인덱스 이름 바꾸기

Elasticsearch 인덱스 이름 바꾸기

2022-06-04 last update

5 minutes reading Elastic Search
Elasticsearch 인덱스는 다양한 문서 매핑을 포함하는 데이터 구조입니다.관계 데이터베이스에서 색인은 특정한 데이터베이스를 인용할 수 있다.
Elasticsearch 클러스터에는 여러 유형의 인덱스가 포함되어 있으며 문서를 저장합니다.
다음은 Elasticsearch와 관계 데이터베이스의 관계를 나타낼 수 있습니다.
  • PostgreSQL-> 데이터베이스-> 테이블-> 행/열
  • Elasticsearch-> 인덱스-> 유형-> 문서
  • 이 안내서에서 우리는 기존의 Elasticsearch 인덱스의 이름을 바꾸는 여러 가지 방법을 토론할 것이다.

    메서드 1: 인덱스 재작성


    인덱스 이름을 바꿀 때 사용할 수 있는 첫 번째 방법은 API를 다시 인덱스하는 것입니다.이 API를 사용하면 문서를 소스 인덱스에서 지정된 대상 인덱스로 복사할 수 있습니다.
    그러나 reindex API는 소스 인덱스 구성을 대상에 복사하지 않습니다.따라서reindex를 호출하기 전에 목표 인덱스를 설정하고 원본 인덱스의 설정을 적용해야 합니다.
    우리는 다음 절차를 통해 완전한 색인 작업을 실현할 수 있다.
  • 새 (소스) Elasticsearch 인덱스 만들기
  • 인덱스 구성을 가져와 저장합니다.
  • 소스 인덱스 구성을 사용하여 새 인덱스를 만듭니다.
  • 소스에서 타겟으로 reindex API 호출
  • 소스 인덱스를 삭제합니다.
  • Elasticsearch 인덱스가 있으면 2단계로 이동합니다.
    참고: 이 안내서에서는 롤업에 대한 모든 Elasticsearch 요청을 제공합니다.
    1단계: 새 색인 만들기
    원본으로 하는 색인을 만듭니다.간단하게 보기 위해서, 우리는 대부분의 기본 매개 변수를 가진 간단한 색인 설정을 사용할 것입니다.
    Elasticsearch HTTP 노드에 요청합니다.
    인덱스 테스트 인덱스 생성 요청 예는 다음과 같습니다.
    curl -XPUT "http://localhost:9200/test-index" -H 'Content-Type: application/json' -d'
    {
    "settings": {
    "index": {
    "number_of_shards": 3,
    "number_of_replicas": 2
    }
    },
    "mappings": {
    "properties": {
    "field1": { "type": "text" }
    }
    }
    }'
    다음 단계는 생성된 인덱스에 데이터를 추가하는 것입니다.기본적으로 색인에는 문서가 없습니다.
    curl -XGET http://localhost:9200/_cat/indices/test-index\?v

    인덱스에 데이터를 추가하려면 다음과 같이 요청을 실행합니다.

    상기 요청은 테스트 인덱스에 문서를 만들어야 합니다.

    색인 끝점에 대한 GET 요청을 사용하여 문서가 있는지 확인할 수 있습니다.
    curl -XGET "http://locahost:9200/test-index/_search" -H 'Content-Type: application/json' -d'
    {
    "query": {"match_all": {}}
    }'
    '
    출력 예는 다음과 같습니다.

    2단계: 소스 구성 가져오기
    색인 다시 지정 작업을 수행하기 전의 다음 단계는 소스 색인 구성을 복사하는 것입니다.
    색인 설정을 가져오는 것부터 시작합니다.이를 위해 설정 API에 HTTP GET 요청을 보냅니다.
    settings=$(curl -XGET "https://localhost:9200/test-index/_settings")
    출력을 다음 명령을 사용하여 검증할 수 있는 변수에 저장합니다.
    echo $settings | jq
    출력은 JSON 형식이기 때문에 jq 등 JSON 프로세서에 전달합니다.출력 예는 다음과 같습니다.

    다음 단계는 색인 맵을 가져오는 것입니다.이 경우 다음과 같이 맵 끝점에 GET 요청을 보냅니다.
    mapping=$(curl -XGET "https://localhost:9200/test-index/_mapping")
    출력이 변수에 저장되었는지 확인합니다.
    echo $mapping | jq
    출력은 그림과 같습니다.

    다음은 $setting과 $mapping의 출력을 JSON 형식으로 조합합니다.
    다음은 두 개의 조합 출력 (config.json) 의 캡처입니다.

    3단계: 새 색인 만들기
    이제save 설정을 사용하여 새 색인을 만들 때입니다.구성에 오류가 없는지 확인합니다.
    명령을 다음과 같이 실행합니다.
    curl -XPUT "http://localhost:9200 /renamed-index" -H 'Content-Type: application/json' -d config.json'
    다음은 이 강좌에서 사용하는 설정 json 파일의 내용입니다.

    생성이 완료되면 확인:true를 보십시오. 그림과 같습니다.

    4단계: 색인 다시 지정
    현재 우리는 원본 인덱스와 유사한 이름 바꾸기 인덱스를 가지고 있으며, 리덱스 API를 사용하여 데이터를 원본에서 목표로 복사할 수 있습니다.
    curl -XPOST "http://localhost:9200/_reindex" -H 'Content-Type: application/json' -d'
    {
    "source": {
    "index": "test-index"
    },
    "dest": {
    "index": "renamed-index"
    }
    }'
    reindex 요청을 보내면 Elasticsearch는 지정한 원본 인덱스에서 대상 인덱스로 데이터를 복사합니다.
    다음은 예제 출력입니다.

    단계 5: 소스 인덱스 제거
    두 개의 설정과 데이터가 비슷한 색인을 가지고 있는 것은 무의미하다.따라서 소스 색인을 삭제할 수 있습니다.
    curl -XDELETE http://localhost:9200/test-index
    {
    "acknowledged" : true
    }

    메서드 2: 클론 API


    두 번째이자 가장 간단한 이름 바꾸기와 색인 방법은 Elasticsearch 7.4 및 상기 버전에 도입된 복제 API를 사용하는 것이다.
    클론 API를 사용하려면 소스 인덱스가 읽기 전용이고 클러스터 상태가 녹색인지 확인해야 합니다.
    클론의 작동 방식
    클론 작업은 다음과 같습니다.
  • 새 Elasticsearch 색인을 만듭니다.새 인덱스는 이전 인덱스 (원본 인덱스) 와 같은 정의를 포함해야 합니다.
  • 다음 단계는 원본 인덱스를 새 Elasticsearch 인덱스로 실행하는 하드 링크입니다.
  • 하드 링크를 실행하면 이전 인덱스의 정의와 데이터로 새 인덱스를 다시 열 수 있습니다.
  • 1단계: 소스 색인을 읽기 전용으로 설정
    소스 색인을 읽기 전용 모드로 설정하려면 다음과 같은 요청에 따라 설정 API를 사용하여 정보를 전달합니다.
    curl -XPUT "http://localhost:9200/test-index/_settings" -H 'Content-Type: application/json' -d'
    {
    "settings": {
    "index.blocks.write": true
    }
    }'
    단계 2: 소스 색인을 대상으로 클론 만들기
    테스트 인덱스를 클론 인덱스 이름 변경이라는 새 인덱스로 복제하려면 다음과 같이 요청을 실행할 수 있습니다.
    볼륨-XPOST"http://localhost:9200/test- 색인/\u 클론/클론 색인 이름 바꾸기 "
    다음 요구가 사실이라면 원본 인덱스의 이름을 바꾸는 인덱스가 있어야 합니다.
  • 지정한 대상 인덱스는 존재할 수 없습니다.
  • 노드에 클론을 저장할 공간이 충분한 인덱스
  • 원본 인덱스의 주 파편 수는 지정된 목표 인덱스의 주 파편 수와 같다.
  • 결론


    이 안내서에서 Elasticsearch 인덱스의 이름을 바꾸는 두 가지 방법을 소개합니다.
    읽어주셔서 감사합니다!