2016-08-25 3 views
0

Я пытаюсь reIndex ElasticSearch, я использовал API Scan и Bulk, но это очень медленно, как я могу параллельно выполнять процесс, чтобы сделать его быстрее. Мой питон код следующим образом:Как параллельно reIndex ElasticSearch

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

На стороне поиска elastics стороны параллельны. Вы получаете хиты от каждого осколка. Но вы всегда можете добавить некоторые предложения в свой запрос и просто запускать несколько поисков одновременно. Например, диапазон дат или числовой/алфавитный диапазон могут работать для этого.

BTW. Поскольку вы используете python, ваш пробег может варьироваться, делая вещи одновременно с потоками. У меня был хороший опыт для обработки процессов вместо потоков с помощью python. Раньше были проблемы с, например, имеющий глобальную блокировку интерпретатора в python.

+0

Спасибо, Джилл, я изменил свой вопрос, не могли бы вы помочь мне снова. – Jack

+0

Мой python немного ржавый, но вы должны использовать mutliprocessing python, чтобы сбрасывать массовые запросы индекса из нескольких процессов. https://docs.python.org/2/library/multiprocessing.html, и вы можете разбить запрос, как я предлагаю выше. –

+0

Я знаю, как много обрабатывать объем, но проблема в том, что сканирование заняло около половины времени. например, весь процесс реиндекса занял 10 часов, когда я удалил большую часть и выполнил только часть сканирования, это займет 5 часов. Поэтому проблема заключается в том, как ускорить скорость сканирования. – Jack