如何使用 Solrj 处理 Solr 中的事务管理?网上与此相关的文档并不多。但如果有人可以提供与使用 SolrJ 进行事务管理相关的任何链接或信息,我将不胜感激。
最佳答案
对于 Solr 和事务,您必须牢记的一点是不存在隔离。 Solr 不支持我们大多数数据库开发人员习惯的事务方式。
提交使所有客户端的所有待处理更改对新查询可见。同样,回滚会回滚所有客户端的所有挂起的更改。哪个客户端发送提交/回滚命令的考虑为零。
因此,错误处理不应自动导致回滚。因为影响可能不仅仅是错误数据。因此,清理工作可能会变得更加困难。
Solr 文档的指导是使用自动提交。在执行批量操作时尤其如此。如果您正在批量建立索引,也许使用多个并行客户端,那么最好每隔一段时间(或每隔这么多文档)自动提交一次。这会导致创建的新索引段更少,从而总体上索引碎片更少。
详细信息将取决于 Solr 实例上发生的查询和索引操作的组合(以及您的复制方法)。
这里有一篇很好的 Lucidworks 文章: Understanding Transaction Logs, Soft Commit and Commit In SolrCloud
关于transactions - 使用 solrj 进行 solr 事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805117/