Solr softCommit 后更新对客户端不可见

Updates not visible to client after Solr softCommit

我有一个查询和更新 solr 实例的节点应用程序。查询一切正常。但是,当我编辑一个项目并提交更新时,当我再次查询时它不会显示,除非我重新启动 solr 服务器。

我现在是 运行 solr 6.1.0 并且正在使用 solr-node-client http://lbdremy.github.io/solr-node-client/

我正在使用 solarconfix.xml 中配置的 autoSoftCommit。

<updateLog>
  <str name="dir">${solr.ulog.dir:}</str>
  <int name="numVersionBuckets">${solr.ulog.numVersionBuckets:65536}</int>
</updateLog>

<autoCommit>
  <maxDocs>10</maxDocs>
  <maxTime>300000</maxTime>
  <openSearcher>false</openSearcher>
</autoCommit>

<autoSoftCommit>
  <maxTime>500</maxTime>
</autoSoftCommit>

我也试过设置 commit/softCommit 和 commitWithin 作为客户端更新请求的一部分,但没有成功。

当我查看 Solr 日志时,我可以看到软提交和硬提交以指定的节奏进行,我也可以看到事务日志中的更改,但它们直到客户端才可见服务器重启。

发现了我自己的问题。正如日志所证明的那样,自动提交配置是正确的。默认情况下,问题是 <query></query> 块中的 <enableLazyFieldLoading> 参数设置为 true,因此它没有获取字段的最新值。将 <enableLazyFieldLoading> 设置为 false 会强制应用程序重新读取字段的值。