我们有一个Solr实例,我们发现在solrconfig.xml中启用autoCommit实际上可以很好地满足我们的需求。但是,有些实例和一些批处理操作我们要暂时禁用自动提交。我无法找到任何东西,但我想知道是否有人知道通过SolrJ您是否可以禁用某个进程的自动提交,然后重新启用它?
答案 0 :(得分:4)
您无法禁用和启用在solrconfig.xml中配置的自动提交。但是,您可以在solrconfig.xml中将其禁用并使用commitWithin for those add commands that need autocommit。
答案 1 :(得分:1)
回答,因为这是“solr disable autocommit”的第一个结果
现在可以使用new config API来覆盖solrconfig.xml中设置的某些属性,而无需重新加载核心。
Solrj尚未实现新的API。
您不应禁用自动提交,请参阅this article。
如果您想同时对多个文档进行批量索引,请设置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