0
我目前遇到了一个问题,我真的陷入了困境。 我正试图解决一个问题,我必须输出Elasticsearch文档并将它们写入csv。文件范围从5万到5百万。 我遇到严重的性能问题,我感觉我在这里失去了一些东西。Elasticsearch批量写入速度很慢,使用扫描和滚动
现在我有一个数据集,我想扫描和滚动,最终将被格式化并写入csv的400,000个文档。但输出的时间是20分钟!这是疯了。
这里是我的脚本:
import elasticsearch
import elasticsearch.exceptions
import elasticsearch.helpers as helpers
import time
es = elasticsearch.Elasticsearch(['http://XX.XXX.XX.XXX:9200'],retry_on_timeout=True)
scanResp = helpers.scan(client=es,scroll="5m",index='MyDoc',doc_type='MyDoc',timeout="50m",size=1000)
resp={}
start_time = time.time()
for resp in scanResp:
data = resp
print data.values()[3]
print("--- %s seconds ---" % (time.time() - start_time))
我使用Elasticsearch托管AWS m3.medium服务器。
任何人都可以告诉我,我可能会在这里做错吗?
难道您轻松导出数据尝试将大小参数设置为10或100? – Rob
@Rob是的,我做了,我从10开始,然后是50,100,150,200,500,100,然后继续改变它。我得到的最好的情况是在200秒的时间里,需要18秒才能输出4000条记录,而这个记录又是非常慢的。我想我绝对缺少一些除尺寸参数外的其他东西。 –