ElasticSearch 인덱스 재구성_reindex

4312 단어 elasticsearch

앞말


인덱스 재구성


원 index를 바탕으로copy의 데이터는 새 index에 있습니다.

왜 색인 재구성 요구가 있습니까?


분사 플러그인 변경, 데이터 형식 변경 등등.(물론 데이터 한 부를 직접 다시 뛸 수도 있다)

인덱스 재구성 방법


홈 페이지를 참조하십시오.https://www.elastic.co/guide/en/elasticsearch/reference/6.5/docs-reindex.html

생산 사례


수요


기존 데이터 내의 필드를 정렬해야 합니다.

문제


정렬이 필요한 필드 저장 형식은 문자열이고 업무상 값은 숫자이며 필드data1을 열지 않았습니다.

솔루션


새 indexmapping은 대응하는 필드의 데이터 형식을long이고 다른 필드는 변하지 않습니다.reindex를 사용하여 데이터 재구성

확장


재구축된 새 인덱스를 운영 환경으로 중단 없이 마이그레이션하는 방법실제 index name 대신 운영 환경에서 색인 별칭(Index Aliases2)을 사용하는 것이 좋습니다.(다음 예제 설명 참조)

예제


reindex API 사용

POST _reindex?wait_for_completion=false// 
{
  "source": {
    "index": "hot-search1" // 
  },
  "dest": {
    "index": "hot-search2"// 
  }
}

API 반환 결과
{
  "task": "dOlIdAkxQEOpXmHOjb3e4A:385537"// 
}

tasks API


퀘스트 상세 홈페이지 문서 조회https://www.elastic.co/guide/en/elasticsearch/reference/6.5/tasks.html
GET _tasks/dOlIdAkxQEOpXmHOjb3e4A:385537

별칭 수정 새 색인 부드럽게 운영 환경으로 마이그레이션

POST _aliases
{
  "actions": [{"add": {// 
    "index": "hot-search2",
    "alias": "hot-search"
  }}, {"remove": {// 
    "index": "hot-search1",
    "alias": "hot-search"
  }}]
}

별명 hot-search는 새로운 인덱스 hot-search2를 가리키며 생산 환경은 별명 hot-search를 사용합니다. 이렇게 하면 인덱스 변경이 생산 환경에 영향을 주지 않습니다.
fielddata:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/fielddata.html ↩︎
Index Aliaseshttps://www.elastic.co/guide/en/elasticsearch/reference/6.5/indices-aliases.html ↩︎

좋은 웹페이지 즐겨찾기