在弹性搜索中导入/导出数据

时间:2014-09-17 11:55:56

标签: python csv elasticsearch backup

我可以访问Elastic Search数据库但我没有管理员权限,这使我能够备份数据。我只是可以查询。 如何将服务器中存储的所有数据传输到另一台服务器?有数百万条记录。我认为将所有数据导出到csv然后下载数据会很好。有没有更好的办法?如果cdv是最好的方法,如何恢复数据?我以这种方式导出了我的记录:

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)

1 个答案:

答案 0 :(得分:3)

您可以使用许多开源项目从群集中提取所有数据 - 您执行match_all的方法无法正常工作。

以下是一些开源项目:

如果这些都不适合您,您可以根据ES的Scan and Scroll API构建自己的。根据ES的文档,python client应该支持扫描和滚动API。