Предпочтительный метод индексирования объемных данных в ElasticSearch?

Я смотрел ElasticSearch, так как решение улучшило функции поиска и аналитики в моей компании. Все наши данные находятся в SQL Server на данный момент, и я успешно установил реку JDBC и получил некоторые тестовые данные в ES.

Реки, похоже, что они могут быть устаревшими в будущих выпусках, а река JDBC

Ответ 1

Мы используем RabbitMQ для передачи данных с SQL Server на ES. Таким образом, Кролик заботится об очередности и обработке.

В качестве примечания мы можем запускать более 4000 записей в секунду из SQL в Rabbit. Мы делаем немного больше обработки перед помещением данных в ES, но мы по-прежнему вставляем в ES более 1000 записей в секунду. Довольно чертовски впечатляет с обоих концов. Кролик и ES оба удивительные!

Ответ 2

Есть много вещей, которые вы можете сделать. Вы можете поместить свои данные в rabbitmq или redis, но ваша основная проблема - оставаться в курсе последних событий. Я думаю, вы должны изучить приложение на основе событий. Но если у вас действительно есть сервер sql в качестве источника данных, вы можете работать с отметками времени и запросом, который проверяет наличие обновлений. В зависимости от размера вашей базы данных вы также можете просто переиндексировать полный набор данных.

Используя события или решение на основе запросов, вы можете подталкивать эти обновления к elasticsearch, возможно, используя массив api.

Хорошая часть пользовательского решения, подобного этому, заключается в том, что вы можете думать о своем сопоставлении. Это важно, если вы действительно хотите сделать что-то умное с вашими данными.