如何并行reIndex ElasticSearch

时间:2016-08-25 14:19:34

标签: elasticsearch elasticsearch-hadoop

我试图重新索引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个分片。

1 个答案:

答案 0 :(得分:0)

在弹性搜索方面,事情是平行的。你从每个碎片得到命中。但是,您始终可以在查询中添加一些子句,并且只需同时运行多个搜索。例如,日期范围或数字/字母范围可能适用于此。

顺便说一句。由于您使用的是python,因此您的里程数可能与线程同时执行。我有很好的经验来分析进程而不是python的线程。曾经存在例如问题。在python中对解释器进行全局锁定。