Исключение конфликта версий ElasticSearch при удалении по запросу

Я использую ElasticSearch в своем приложении Laravel, и недавно я реализовал возможность удаления документов из индекса эластичного поиска. Проблема в том, что я продолжаю получать version_conflict_engine_exception ошибка.

Мой код выглядит так:

      $params = [
    'index' => 'invoices',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    ['term' => ['user_id' => $userId]]
                ]
            ]
        ]
    ],
    'refresh' => true,
];

Elasticsearch::deleteByQuery($params);

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

      {
  "took": 1189,
  "timed_out": false,
  "total": 47,
  "deleted": 0,
  "batches": 1,
  "version_conflicts": 47,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1,
  "throttled_until_millis": 0,
  "failures": {
    "index": "invoices",
    "type": "_doc",
    "id": "6e6bd47a-c225-4d7f-8798-cc1275b0363c",
    "cause": {
      "type": "version_conflict_engine_exception",
      "reason": "[6e6bd47a-c225-4d7f-8798-cc1275b0363c]: version conflict, required seqNo [667648], primary term [7]. but no document was found",
      "index_uuid": "7wBzPBXYT4Kfx8jP1SjSNA",
      "shard": "0",
      "index": "invoices"
    },
    "status": 409
  }
}

Могло ли быть что-то еще, что я делаю не так?

0 ответов

Другие вопросы по тегам