Я работаю с очень большим набором данных, и мне нужно очистить (удалить) некоторые свойства некоторых документов и сразу же добавить это свойство в другие документы. Иногда документы с удаленным свойством - это те, которые я должен обновить после. Проблема в том, что иногда возникает ConflictError, и мне интересно, как мне ждать, пока первый запрос будет полностью выполнен, чтобы позже выполнить второй. Это код, который я использую:
ubq = UpdateByQuery(using=self.es, index=self.index).update_from_dict(query1).script(source=script_remove_source)
ubq.execute()
ubq = UpdateByQuery(using=self.es, index=self.index).update_from_dict(query2).script(source=script_add_source)
ubq.execute()
Есть идеи?
В эластичных документах упоминается параметр wait_for_completion , но они не представляют пример использования. И вообще, это не Elasticsearch DSL. Я прочитал DSL документы , но ничего не сказано о синхронизации или асинхронности.
То, что я сейчас делаю, это засыпаю на 3 секунды ... И это работает, но это совершенно ужасно.
Заранее спасибо!