保证 Apache SOLR 提交的最佳方法是什么?

haj*_*ime 2 solr solrcloud solr4

问题:如何使用 Apache SOLR 获得“保证提交”,其中将数据持久保存到磁盘和可见性同样重要?

背景:我们有一个网站,需要机器学习的高端搜索功能,并且还需要保证金融交易的提交。我们只想将 SOLR 作为唯一的数据存储以保持简单,并且不想同时使用另一个数据库。

我似乎找不到这个问题的任何答案。金融交易最简单的解决方案似乎是在持久化后定期查询 SOLR 的记录,但这可能需要更长的等待时间,或者是否有更好的解决方案?

任何人都可以建议一个使用 SOLR 实现“保证提交”的解决方案吗?

ely*_*rag 5

正如您在邮件列表中被告知的那样,Solr 没有事务。如果您从十几个客户端建立索引,并且提交发生在某个地方(无论是 autoSoftCommit、udpate 请求上的 commitWithin,还是来自这十几个客户端之一的显式提交),那么这十几个客户端索引的所有文档都将对所有人可见搜索者。

对于事务数据库,发送更新的十几个客户端中的每一个都必须发出提交,这只会使该特定客户端所做的更改可见。

Solr 通常不对提交做出任何保证。如果您并行发出十次提交,则很可能会超出 maxWarmingSearchers 配置(通常设置为 2)。这十次提交中的大多数实际上不会创建新的搜索器,而这正是使新文档可见的原因。

如果您以永远不会超过 maxWarmingSearchers 的方式进行手动提交,那么当提交完成且没有错误时,您可以将其视为所有更改现在都可见的标志。