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
会强制应用程序重新读取字段的值。
我有一个查询和更新 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
会强制应用程序重新读取字段的值。