Я пытаюсь 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 осколков.
Спасибо, Джилл, я изменил свой вопрос, не могли бы вы помочь мне снова. – Jack
Мой python немного ржавый, но вы должны использовать mutliprocessing python, чтобы сбрасывать массовые запросы индекса из нескольких процессов. https://docs.python.org/2/library/multiprocessing.html, и вы можете разбить запрос, как я предлагаю выше. –
Я знаю, как много обрабатывать объем, но проблема в том, что сканирование заняло около половины времени. например, весь процесс реиндекса занял 10 часов, когда я удалил большую часть и выполнил только часть сканирования, это займет 5 часов. Поэтому проблема заключается в том, как ускорить скорость сканирования. – Jack