如何使用Solrj来处理事务管理Solr中? 没有与此有关的净多文档。 但我希望如果有人能提供与使用SolrJ事务管理的任何链接或信息。
Answer 1:
你将不得不以编程方式与SolrJ交易处理。 当多次写入处理。
- 使用SolrServer API add方法的SolrInputDoucments添加到服务器。
- 当添加了所有SolrInputDocuments,调用从SolrServer API提交方法来提交所有更改。
- 在从Solr的异常的情况下,如果你想回滚写入Solr的,调用API SolServer回滚方法。
- 如果您想回滚写入数据库为好,只是丢回从catch块一个运行时异常。
这是我如何处理的事务管理。 如果任何人有更好的答案,请随时提高了答案。
Answer 2:
你必须保持在使用Solr和交易心态的事情是,没有隔离。 Solr的不支持事务,我们大多数数据库开发人员使用的方式。
提交使得通过新的查询可见的所有客户挂起的更改。 同样,回滚回滚所有客户端的所有挂起的更改。 存在零考虑其中客户端发送的提交/回滚命令。
出于这个原因,错误处理应该不会自动导致回滚。 因为影响可能不仅仅是错误的数据更为广阔。 并清理可能会更加困难,因为结果。
从Solr的文档的指导是使用自动提交。 执行批量操作时,这一点尤其如此。 如果您在批量索引,也许有多个并行的客户,那么最好是自动提交,每隔一段时间(或每那么多文件)。 这导致创建新的较少索引分段并且作为结果总体上较少的碎片索引。
细节将取决于查询和索引操作发生在你的Solr的实例(和你的复制方法)的组合。
这是一个很好Lucidworks文章在这里: 了解事务日志,软提交,并承诺在SolrCloud
文章来源: solr transaction management using solrj