2014-11-20 4 views
0

Я использую Mysql для индексирования данных в SOLR. Раньше данные были меньше, поэтому индексирование происходило быстро без какого-либо отставания. Теперь мои данные содержат почти 3 миллиона строк, и запрос mysql всегда истекает, и из-за этого SOLR не может индексировать данные соответствующим образом. Есть ли способ индексировать SOLR с помощью mysql или делать какие-либо настройки в SOLR? Пожалуйста помоги.Как оптимизировать индексирование solr с помощью mysql

ответ

1

Если вы не используете incremental/delta indexing, вы должны начать делать это вместо этого. Таким образом будут снова индексированы только те строки, которые изменились с момента последнего запуска индекса, что позволяет уменьшить влияние и количество строк из MySQL.

Кроме того, JDBCDataSource (который, как я полагаю, вы используете) supports the batchSize parameter, который сообщает драйверу JDBC ограничить количество документов в каждом запросе и вместо этого выдает несколько запросов.

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

+0

Я также использую импортер дельты с отметкой last_update. Я извлекаю все данные, которые были изменены до 30 минут или что-то в этом роде. Но этот запрос также принимает тайм-аут. Это главным образом потому, что у меня есть 15 таблиц, которые делают левые соединения в запросе на импорт mysql delta. Так что я могу сделать это партиями ??? –

+0

Существует по крайней мере два варианта. Используйте функцию объяснения MySQL, чтобы узнать, почему ваш запрос занимает много времени, и оптимизируйте его, чтобы как можно меньше возвращаться с минимальным количеством поисков. Если вы делаете дельта-импорт и видите три миллиона измененных строк для каждого импорта, делайте импорт чаще, если это проблема. Добавьте соответствующие индексы. Другим вариантом является использование нескольких уровней сущностей в конфигурации DIH, так что Solr может выполнять соединения в самом коде (и кэшировать каждый поиск по мере необходимости). Это может помочь, возможно, нет. Пытаться. – MatsLindh

Смежные вопросы