假设我在主Solr服务器上进行了复制,配置如下:
<lst name="master">
<str name="enable">true</str>
<str name="replicateAfter">optimize</str>
<str name="confFiles">solrconfig.xml,schema.xml,stopwords.txt,synonyms.xml</str>
<str name="commitReserveDuration">00:00:10</str>
</lst>
和slave配置如下:
<lst name="slave">
<str name="enable">true</str>
<str name="masterUrl">masterSolr</str>
<str name="pollInterval">24:00:00</str>
</lst>
答案 0 :(得分:1)
复制是一种拉动机制 - 因此,为了能够支持您的场景,您需要进行一些配置。
对于你的问题:
1.它没有 - 它从主人那里拉出间隔(或强制),它告诉你什么版本准备好被复制
2.是 - 24小时
3.仅当自上次索引获取以来已完成优化时
4.需要从主站到从站的一些配置和知识
您可以在updatehandler上使用postOptimize update事件来强制对从属设备进行复制
<listener event="postOptimize" class="solr.RunExecutableListener">
<str name="exe">wget</str>
<str name="dir">solr/bin</str>
<bool name="wait">true</bool>
<arr name="args"> <str> http://slave_host:port/solr/core?/replication?command=fetchindex</str> </arr>
</listener>
然后,您可以从slave配置中删除轮询间隔。你需要为每个奴隶添加多个args(在str标签中)