Elasticsearch: ускорьте итерацию по двум индексам с помощью python

#python #elasticsearch

Вопрос:

У меня есть два индекса в elasticsearch, которые я прокручиваю с помощью python. Я ищу, существует ли определенное значение поля в одном индексе в другом индексе, и если это правда, я обновляю второй индекс:

 for row in helpers.scan(es,index='mc_raw',scroll='25m',query={'query':{'bool':{'must':[{'exists':{'field':'marque'}}],'must_not':[{'exists':{'field':'id_master'}}]}}}):
          for line in helpers.scan(es,index="mc_master",scroll='25m',query={"query": {"match_all": {}}}):
                    if row["_source"]["ref_fr"] == line["_source"]["ref_fr"] and row["_source"]["marque"] == line["_source"]["marque"] and row["_source"]["source"] == line["_source"]["source"] :
                        es.update(index='mc_raw',id=row["_id"],body={"doc":{"id_master":line["_id"]}})
                        es.update_by_query(index='mc_master',body={"script": {"source": "if (!(ctx._source.raw_id instanceof Collection)) {ctx._source.raw_id = [ctx._source.raw_id];} ctx._source.raw_id.add(params.newsupp)","lang": "painless","params":{"newsupp":row["_id"]}},"query": {"match": {"_id":line["_id"]}}})
 

Это работает, но занимает слишком много времени. Как я могу это ускорить?