SolrJ: отключить автокоммит - PullRequest
0 голосов
/ 11 апреля 2011

У нас есть экземпляр Solr, где мы обнаружили, что включение autoCommit в solrconfig.xml действительно может хорошо удовлетворить наши потребности. Однако в некоторых случаях и в некоторых пакетных операциях мы хотим временно отключить автоматическую фиксацию. Я не смог ничего найти, но мне интересно, если бы кто-нибудь знал, можно ли через SolrJ отключить автокоммит для определенного процесса, а затем снова включить его?

Ответы [ 2 ]

4 голосов
/ 11 апреля 2011

Вы не можете отключить и включить автокоммит, так как он настроен в solrconfig.xml. Тем не менее, вы можете оставить его отключенным в solrconfig.xml и использовать commitWithin для тех команд добавления, для которых требуется автокоммит .

.
1 голос
/ 11 августа 2016

отвечает, потому что это первый результат для «solr disable autocommit».
Это теперь возможно с новым config API , который позволяет переопределить некоторые свойства, установленные в solrconfig.xml, без перезагрузки ядра.
Solrj пока не реализует этот новый API.

Не следует отключать автокоммиты , см. эту статью .

Если вы хотитеЧтобы выполнить массовую индексацию сразу нескольких документов, установите updateHandler.autoCommit.openSearcher=false и отключите autoSoftCommits:

/**
 * Disables the autoSoftCommit feature.
 * Use {@link #reEnableAutoCommit()} to reenable.
 * @throws IOException network error.
 * @throws SolrServerException solr error.
 */
public void disableAutoSoftCommit() throws SolrServerException, IOException
{
   // Solrj does not support the config API yet.
   String command = "{\"set-property\": {" +
         "\"updateHandler.autoSoftCommit.maxDocs\": -1," +
         "\"updateHandler.autoSoftCommit.maxTime\": -1" +
   "}}";

   GenericSolrRequest rq = new GenericSolrRequest(SolrRequest.METHOD.POST, "/config", null);
   ContentStream content = new ContentStreamBase.StringStream(command);
   rq.setContentStreams(Collections.singleton(content));
   rq.process(solrClient);
}

/**
 * Undo {@link #disableAutoSoftCommit()}.
 * @throws IOException network error.
 * @throws SolrServerException solr error.
 */
public void reenableAutoSoftCommit() throws SolrServerException, IOException
{
   // Solrj does not support the config API yet.
   String command = "{\"unset-property\": [" +
         "\"updateHandler.autoSoftCommit.maxDocs\"," +
         "\"updateHandler.autoSoftCommit.maxTime\"" +
   "]}";

   GenericSolrRequest rq = new GenericSolrRequest(SolrRequest.METHOD.POST, "/config", null);
   ContentStream content = new ContentStreamBase.StringStream(command);
   rq.setContentStreams(Collections.singleton(content));
   rq.process(solrClient);
}

Переопределенные свойства можно увидеть по адресу http://localhost:8983/solr/<core>/config/overlay

...