【发布时间】:2015-10-14 07:42:42
【问题描述】:
我目前遇到了一个我真正陷入困境的问题。 我正在尝试解决一个问题,我必须输出 Elasticsearch 文档并将它们写入 csv。文档从 50,000 到 500 万不等。 我遇到了严重的性能问题,我觉得我在这里遗漏了一些东西。
现在我有一个包含 400,000 个文档的数据集,我正在尝试对其进行扫描和滚动,最终将被格式化并写入 csv。但是输出的时间是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 服务器。
谁能告诉我我在这里做错了什么?
【问题讨论】:
-
您是否尝试将 size 参数设置为 10 或 100?
-
@Rob 是的,我做到了,我从 10 开始,然后是 50、100,150、200、500、100,然后继续更改它。我得到的最好的情况是在 200 时需要 18 秒才能输出 4000 条记录,这又是非常慢的。我想我肯定错过了除了 size 参数之外的其他东西。
标签: elasticsearch