Проверка разницы между базой данных ES и SQL - PullRequest
0 голосов
/ 20 октября 2019

В настоящее время у меня есть база данных SQL ~ 250 000 записей (с уникальным идентификатором), и каждый раз, когда запись добавляется в базу данных, она также записывается в ES (с идентификатором). Каждая запись в базе данных имеет удаленное поле, которое используется для мягкого удаления (это не записано в ES). Поскольку запись может быть мягко удалена, количество документов в ES всегда будет равно или больше, чем количество не удаленных записей в базе данных.

Я также написал код для удаления всехдокументы в ES и заполнить его записями, которые не были удалены, так что # документы ES == # не удаленных документов.

Допустим, я хочу проверить, все ли не удаленные записи находятся в ES (они должны быть, но давайте скажем, что по какой-то причине после добавления записи в базу данных она не индексирует ее в ES, и мы не знали, что будет лучшим способом?

Изначально я думалвыполнить поиск для каждой из не удаленных записей в базе данных, но тогда это ~ 250 000 запросов GET, есть ли лучший способ сравнить разницу?

1 Ответ

0 голосов
/ 20 октября 2019

Я предлагаю следующее:

  1. также добавьте поле deleted к документам ES, и каждый раз, когда вы (программно) удаляете документ в SQL, также обновляете поле deleted в ES.
  2. Чтобы получить количество всех не удаленных записей, вам просто нужно сосчитать документы с помощью deleted:false - используя один простой запрос.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...