我试图重新索引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个分片。
答案 0 :(得分:0)
在弹性搜索方面,事情是平行的。你从每个碎片得到命中。但是,您始终可以在查询中添加一些子句,并且只需同时运行多个搜索。例如,日期范围或数字/字母范围可能适用于此。
顺便说一句。由于您使用的是python,因此您的里程数可能与线程同时执行。我有很好的经验来分析进程而不是python的线程。曾经存在例如问题。在python中对解释器进行全局锁定。