2016-07-13 2 views
2

나는 elasticsearch를 처음 사용하고 웹에서 스크랩 한 데이터를 저장하고 분석을 위해 키 바나를 전달하는 데이 방법을 사용해 왔습니다.elasticsearch - elasticdump 백업 및 복원 하시겠습니까?

하지만 매핑을 조정해야합니다. 내가 모은 것에서는 기존 필드의 매핑을 즉시 변경할 수 없습니다. 지금까지 매핑을 조정해야 할 때마다 색인을 삭제하고 새로운 매핑을 만든 다음 다시 크롤링을 시작했습니다 (아프다!).

그래서 기존의 크롤링 및 매핑과는 별도로 데이터를 쉽게 백업하므로 매핑을 점진적으로 조정할 때 데이터를 복원 할 수 있습니다.

나는 elasticdump를 사용하여 보았지만 매핑과 데이터의 json 출력을 만들 수 있다는 것이 꽤 명백한 반면, elasticdump를 사용하여 생성 된 파일과 아카이브 된 json 파일의 데이터 및/또는 매핑을 다시 가져올 수 있습니까?

의견/조언을 주셔서 감사합니다.

답변

1

가동 중지 시간없이 인덱스를 완전히 다시 작성하지 않고도 Elasticsearch에서 매핑을 변경하는 데는 몇 가지 방법이 있습니다. 새로운 reindex API를 사용

  • 최신은, here을 발견 할 수있다. 그리고 here은 그것을 사용하는 방법에 대한 간단한 예제가있는 기사입니다.

  • 또 다른 방법 (the official one)은 scrollbulk api 's를 사용하여 하나의 색인에서 새로운 색인으로 다시 색인화합니다. 캐치는 동일한 "인덱스"이름을 유지하면서 매핑을 변경하기 위해 aliases을 사용합니다. 어떤 설명이 here입니다. 핵심 개념은 모든 인덱스에 대한 별칭을 만들고 별칭을 사용하여 실제 인덱스 이름이 아닌 데이터를 인덱싱하는 것입니다. 매핑을 변경해야하는 경우 새 매핑을 사용하여 새 인덱스를 만들고 모든 데이터가 새 인덱스로 다시 인덱싱되면 별칭을 변경하여 새 인덱스를 가리 킵니다.

색인을 저장하는 것과 관련하여 색인을 저장하지 않고 Elasticsearch에 색인을 저장하는 공식 방법을 모르겠습니다.

어쨌든 데이터를 다른 위치의 다른 클러스터로 옮긴 다음 다시 색인화하게하려는 경우. Amazon S3에서 스냅 샷/복원에 대한 this 문서를 유용하게 사용할 수 있습니다.

그리고이 link은 다른 파일 시스템과 스냅 샷/복원하는 방법에 대한 Elasticsearch 문서로 연결됩니다.

희망을 도왔습니다.

+0

감사 Eyal 님을 보는 것보다 행동에 복원 할 경우 "elasticsearch 데이터의 백업을 수행하는 방법"을 설명하는 블로그 게시물입니다; 링크를 시도했지만 기사에 연결할 수 없습니다. 다시 게시 할 수 있습니까? – Mike77

+0

예, 링크를 다시 수정했습니다. 불편을 끼쳐 드려 죄송합니다. –

+0

그의 문제는 매핑 변경과 관련되어 있기 때문에 도움이 될지 모르겠습니다 ... 원래 매핑을 다시 복원하지 않겠습니까? –

2

결국 나는 elasticdump를 사용했고 사용하기 쉽고 간단했습니다.

아직 다른 매핑으로 elasticsearch 데이터베이스를 다시 만들지 않아서 전체 루프를 테스트하지 않았으므로 필요하다고 생각했습니다. 그러나 elasticdump를 사용하면 전체 데이터 세트를 json 형식 (항목 색인 항목별로 완료)으로 내보내고 매핑을 별도로 내보낼 수 있다고보고 할 수 있습니다. 분석기를 별도로 내보낼 수도 있지만 필요는 없습니다.

이제이 두 파일을 사용합니다. 새 인스턴스를 만들 필요가 있지만 매핑 및 분석기 설정이 다른 경우 수동으로 매핑 파일을 조정하고 매핑을 새 데이터베이스로 가져온 다음 데이터를 가져올 수 있다고 생각합니다.그런 다음 시각화에 kibana를 사용하면 새 색인을 선택하기 만하면됩니다.

참조의 편의를위한 몇 가지 명령 :

데이터에 대한 다음
npm install elasticdump -g 

:

매핑에 대한 다음
elasticdump \ 
    --input=http://production.es.com:9200/my_index \ 
    --output=/data/my_index_data.json \ 
    --type=data 

:

elasticdump \ 
    --input=http://production.es.com:9200/my_index \ 
    --output=/data/my_index_mapping.json \ 
    --type=mapping 

나는이 테스트에 라운드를 얻을 때 새로운 환경 나는 reimport의 실제 테스트를 확인할 수있을 테지만 만약 anyon의 경우에 지금 업데이트 할 것이라고 생각했다. 다른 사람들은 옵션을보고있다.

+0

안녕하세요 @ Mike77 --type = data/analyzer/mapping의 차이점을 도울 수 있습니까? 데이터는 인덱스의 실제 데이터입니다. 매핑은 각 필드 번호/바이트/문자열 등의 사용자 정의 데이터 유형 매핑이 될 것입니다. 제가 틀렸다면 수정하십시오. 어떤 분석기가 어떤 의미인지는 모르겠다. –

+0

그냥 elasticdump \ --input = http : //production.es.com : 9200/my_index \ --output =/data/my_index_data.json \ --type = data 노드 js. 하지만 입력이 정의되지 않은 오류가 나타납니다. 나는 바른 길로 나아가고 있는가. 제안 해주세요. – Gopal

4

당신이 스냅 샷을 사용하여 elasticsearch 데이터의 백업을하고 elasticsearch 자체에서 제공하는 API를 복원 할 수 있습니다 (참고로 당신은 또한 하나의 ES 데이터베이스와 출력에서 ​​직접 다른 내보낼 수 있습니다). 예 :

PUT /_snapshot/my_backup/snapshot_1 
{ 
    "indices": "index_1,index_2", 
    "ignore_unavailable": true, 
    "include_global_state": false 
} 

Here는 백업을보고이 video tutorial