Запрос Elasticsearch, возвращающий удаленные записи - PullRequest
1 голос
/ 09 января 2020

У меня есть эта странная ошибка с упругим поиском, возвращающая попадание в запись, которая должна быть (и, кажется, удалена).

Вот моя структура приложения:

  • Rails Api, использующий Searchkick для управления индексами ES
  • ES версия 5.6
  • Angular веб-приложение, которое запрашивает ES напрямую

Обычный вариант использования заключается в том, что все управление индексами выполняется с помощью searchkick, но приложение внешнего интерфейса отправляет запросы непосредственно на сервер ES, а не через интерфейс searchkick (API-интерфейсы rails обслуживают многие другие веб-приложения).

Я запускаю сценарий, который удаляет запись из моей базы данных, которая должна асинхронно c соответствовать моему индексу ES. Например, если я удаляю запись с id = 12345, то при выполнении MyModel.search 12345 searchkick не может вернуть эту запись, поскольку ее больше нет в индексе.

Однако во внешнем приложении, когда я запросите индекс ES напрямую, он действительно возвращает запись! Вот пример используемого мной запроса ES, который возвращает ровно 1 попадание (удаленную запись). Следует также отметить, что это происходит не всегда, а иногда всплывает, оставляя записи о призраках.

{"query":{"bool":{"must":[{"match":{"id":"12345"}},{"nested":{"path":"nested_object","inner_hits":{"size":100},"query":{"bool":{}}}}],"should":[]}},"size":30,"from":0,"sort":["_score",{"updated_at":"asc"}]}

Кто-нибудь знает, почему мой запрос searchkick и прямой запрос ES не согласны по этому поводу? удаленная запись?

...