Предпочтительный метод индексирования объемных данных в 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.
Хорошая часть пользовательского решения, подобного этому, заключается в том, что вы можете думать о своем сопоставлении. Это важно, если вы действительно хотите сделать что-то умное с вашими данными.