我正在尝试扫描ElasticSearch,我使用了Scan和Bulk API,但它非常慢,我如何并行这个过程才能让它更快。我的python代码如下:
actions=[]
for hit in helpers.scan(es,scroll='20m',index=INDEX,doc_type=TYPE,params=
{"size":100}):
value= hit.get('_source')
idval = hit.get('_id')
action = indexAction(INDEX_2,TYPE_2,idval,value)
actions.append(action)
count+=1
if(count%200==0):
helpers.bulk(es, actions,stats_only=True,params=
{"consistency":"one","chunk_size":200})
actions=[]我是应该扫描多个进程,还是应该批量扫描多个进程。我一直在想ElasticSearch-Hadoop是如何实现这一点的。我的索引有10个节点和20个分片。
发布于 2016-08-25 23:17:08
在elasticsearch方面,事情是平行的。您将从每个分片中获得命中结果。但是,您可以随时向查询添加一些子句,并简单地同时运行多个搜索。例如,日期范围或数字/字母范围可能适用于此。
顺便说一句。由于您使用的是python,因此使用线程并发执行任务的里程可能会有所不同。我有很好的使用python创建进程而不是线程的经验。例如,在python中解释器上有一个全局锁,这是一个问题。
https://stackoverflow.com/questions/39147823
复制相似问题