Как настроить Solr для улучшения скорости индексирования

У меня есть клиентская программа, которая генерирует 1-50 миллионов Solr-документов и добавляет их в Solr.
Я использую ConcurrentUpdateSolrServer для подталкивания документов от клиента, 1000 документов на запрос.
Документы относительно небольшие (несколько небольших текстовых полей).
Я хочу улучшить скорость индексирования.
Я попытался увеличить "ramBufferSizeMB" до 1G и "mergeFactor" до 25, но не видел никаких изменений.
Мне было интересно, есть ли другие рекомендуемые настройки для улучшения скорости индексации Solr.
Будут оценены любые ссылки на соответствующие материалы.

Ответ 1

Похоже, вы делаете массовый импорт данных в Solr, поэтому вам не нужно сразу искать какие-либо данные.

Во-первых, вы можете увеличить количество документов на запрос. Поскольку ваши документы небольшие, я бы даже увеличил его до 100 тыс. Документов по запросу или более и попробовал.

Во-вторых, вы хотите уменьшить количество попыток совершения при индексировании навалом. В твоем solrconfig.xml искать:

<!-- AutoCommit

     Perform a hard commit automatically under certain conditions.
     Instead of enabling autoCommit, consider using "commitWithin"
     when adding documents.

     http://wiki.apache.org/solr/UpdateXmlMessages

     maxDocs - Maximum number of documents to add since the last
               commit before automatically triggering a new commit.

     maxTime - Maximum amount of time in ms that is allowed to pass
               since a document was added before automatically
               triggering a new commit.

     openSearcher - if false, the commit causes recent index changes
     to be flushed to stable storage, but does not cause a new
     searcher to be opened to make those changes visible.
  -->
 <autoCommit>
   <maxTime>15000</maxTime>
   <openSearcher>false</openSearcher>
 </autoCommit>

Вы можете полностью отключить autoCommit, а затем вызвать фиксацию после публикации всех ваших документов. В противном случае вы можете настроить номера следующим образом:

Значение по умолчанию maxTime равно 15 секундам, поэтому автоматическое совершение происходит каждые 15 секунд, если есть незафиксированные документы, поэтому вы можете установить это на что-то большое, скажем, 3 часа (т.е. 3 * 60 * 60 * 1000). Вы также можете добавить <maxDocs>50000000</maxDocs>, что означает, что автоматическое совершение происходит только после добавления 50 миллионов документов. После того, как вы разместите все свои документы, вызовите фиксацию один раз вручную или из SolrJ - для фиксации потребуется некоторое время, но это будет намного быстрее.

Также после того, как вы закончите свой массовый импорт, уменьшите maxTime и maxDocs, чтобы любые пошаговые сообщения, которые вы будете делать с Solr, получат гораздо раньше. Или используйте commitWithin, как указано в solrconfig.