2014-09-17 4 views
0

Elastic Search 데이터베이스에 대한 액세스 권한이 있지만 데이터를 백업 할 수있는 관리자 권한이 없습니다. 쿼리 만 할 수 있습니다. 서버에 저장된 모든 데이터를 다른 서버로 전송하는 방법은 무엇입니까? 수백만 건의 기록이 있습니다. 모든 데이터를 CSV로 내보내고 데이터를 다운로드하는 것이 좋을 것 같습니다. 거기에 더 좋은 방법이 있습니까? cdv가 최상의 접근 방법이라면 어떻게 데이터를 복원 할 수 있습니까? 내 기록이 방법을 내 보낸 :Elastic Search에서 데이터 가져 오기/내보내기

당신이 당신의 클러스터에서 모든 데이터를 추출하는 데 사용할 수있는 오픈 소스 프로젝트가 있습니다
body = {"query": {match_all": {}}}" 


res = es.search(index="mydb", doc_type='entry', body=body) 

import csv 

with open('static/data/sitemap/data.csv', 'wb') as f: # Just use 'w' mode in 3.x 
    w = csv.DictWriter(f, res.keys()) 
    w.writeheader() 
    w.writerow(res) 

답변

3

- match_all이 제대로 작동하지 않을 일을 당신의 접근 방식은. 여기

몇 가지 오픈 소스 프로젝트입니다 :

  • Elasticsearch Exporter =이는 Node.js를 것입니다, 그래서 당신은 또한
  • Elasticsearch knapsack 설치해야 할 - 그것 때문에 아마, 이것은 플러그인입니다 상황
  • Elasticsearch Dump 작동하지 않습니다 - 당신을 위해 그 일의 아무도, 당신은 당신의 자신의 기반을 구축 할 수없는 경우가

그리고 기반 Node.js를도 API의 경우 Scan and Scroll ES의 설명서에 따르면 python client은 스캔 및 스크롤 API를 지원한다고 가정합니다.

+0

왜 match_all이 작동하지 않습니까? –

+0

match_all은 특정 수의 결과 만 반환하기 때문에 모든 결과를 반환하도록 설정하면 메모리 부족으로 ES가 실행됩니다 ... 한 번에 한 페이지 씩 결과를 페이징하는 것이 비효율적이며 수행하는 동안 데이터를 인덱싱하는 경우, 당신은 뭔가 모순되는 것을 얻을 수 있습니다. – Alcanzar

관련 문제