Удаление Elasticsearch по конфликту версий запроса - PullRequest
0 голосов
/ 14 мая 2019

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

Запрос находится вasticsearch-dsl и выглядит так:

def remove_employees_from_search(jurisdiction_slug, year):
    s = EmployeeDocument.search()
    s = s.filter('term', year=year)
    s = s.query('nested', path='jurisdiction', query=Q("term", **{'jurisdiction.slug': jurisdiction_slug}))
    response = s.delete()
    return response

Проблема в том, что я получаю исключение ConflictError при попытке удалить записи с помощью этой функции. Я читал, что это происходит потому, что документы были разными в момент запуска и выполнения процесса удаления. Но я не знаю, как это может быть, потому что больше ничего не изменяет записи во время процесса удаления.

Я собираюсь добавить s = s.params(conflicts='proceed'), чтобы исключить исключение. Но это пластырь, так как я не понимаю, почему удаление не обрабатывается, как ожидалось. Любые идеи о том, как решить эту проблему? Ниже приведен снимок ошибки:

ConflictError:TransportError(409,
u'{  
   "took":10,
   "timed_out":false,
   "total":55,
   "deleted":0,
   "batches":1,
   "version_conflicts":55,
   "noops":0,
   "retries":{  
      "bulk":0,
      "search":0
   },
   "throttled_millis":0,
   "requests_per_second":-1.0,
   "throttled_until_millis":0,
   "failures":[  
      {  
         "index":"employees",
         "type":"employee_document",
         "id":"24681043",
         "cause":{  
            "type":"version_conflict_engine_exception",
            "reason":"[employee_document][24681043]: version conflict, current version [5] is different than the one provided [4]",
            "index_uuid":"G1QPF-wcRUOCLhubdSpqYQ",
            "shard":"0",
            "index":"employees"
         },
         "status":409
      },
      {  
         "index":"employees",
         "type":"employee_document",
         "id":"24681063",
         "cause":{  
            "type":"version_conflict_engine_exception",
            "reason":"[employee_document][24681063]: version conflict, current version [5] is different than the one provided [4]",
            "index_uuid":"G1QPF-wcRUOCLhubdSpqYQ",
            "shard":"0",
            "index":"employees"
         },
         "status":409
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...