Solr DataImportHandler импорт дельты - PullRequest
1 голос
/ 07 января 2011

Я использую DataImportHandler для индексации данных в SOLR. Я использовал полный импорт для индексации всех данных в моей базе данных, которая составляет около 10000 продуктов. Теперь я запутался с использованием дельта-импорта? Индексирует ли он новые данные, добавленные в базу данных с интервалом, я имею в виду, что он собирается индексировать новые данные, добавленные в мою таблицу, примерно в 10 строк или просто обновляет изменения в уже проиндексированных данных.

Может кто-нибудь, пожалуйста, объясните мне простой пример, как только сможете.

Ответы [ 3 ]

4 голосов
/ 20 января 2011

DataImportHandler может быть немного пугающим. Ваш начальный запрос загрузил 10.000 уникальных продуктов. Это загружается, если вы указываете / dataimport? Command = full-import. Когда этот импорт завершен, DIH сохраняет переменную ({dataimporter.last_index_time}), которая является последней датой / временем, когда вы выполняли этот импорт.

Чтобы выполнить обновление, вы указываете deltaQuery. DeltaQuery предназначен для идентификации записей, которые изменились в вашей базе данных с момента последнего обновления. Итак, вы указываете запрос следующим образом: SELECT product_id С некоторого ГДЕ [date_update]> = '$ {dataimporter.last_index_time}' Это позволит получить все product_ids из вашей базы данных, которые были обновлены с момента вашего последнего полного обновления. Следующий запрос (deltaImportQuery), который вам нужно указать, - это запрос, который будет извлекать полную запись для каждого product_id, полученного на предыдущем шаге.

Предполагая, что product_id является вашим уникальным ключом, solr определит, что ему нужно обновить существующую запись или добавить ее, если product_id не работает.

Чтобы выполнить deltaQuery и deltaImportQuery, вы используете / dataimport? Command = delta-import

Это большое упрощение всех возможностей, посмотрите вики Solr на DataImportHandler, это ОЧЕНЬ мощный инструмент!

3 голосов
/ 07 сентября 2012

На другой ноте:

Когда вы используете дельта-импорт в небольшом временном окне (например, пару раз за несколько секунд), а сервер баз данных находится на другом компьютере, а не на службе индекса Solr, убедитесь, что systemtime на обоих компьютерах совпадает, так как отметка времени [date_update] генерируется на сервере базы данных, а dataimporter.last_index_time генерируется на другом.

В противном случае вы не будете обновлять индекс (или слишком много) в зависимости от разницы во времени.

0 голосов
/ 26 июля 2012

Я согласен, что обработчик импорта данных может справиться с этой ситуацией.Одним из важных ограничений DIH является то, что он не ставит запросы в очередь.Результатом этого является то, что если индексирование DIH "занято", оно будет игнорировать все будущие запросы DIH, пока оно снова не будет "бездействующим".Пропущенные запросы DIH потеряны и не выполнены.

...