配置分布式Solr服务器java
参照Solr单机版的配置,配置多台Solr服务器apache
假设目前存在多台已经配置好的Solr服务器分别为服务器
http://127.0.0.1:8080/solr/connection1分布式
http://127.0.0.1:8081/solr/connection1spa
http://127.0.0.1:8082/solr/connection1xml
目前须要设置8080为主机,8081,8082为从机get
修改主节点同步
(1):找到须要设置主库的solrhome,找到其中须要设置的核心connection1,例如路径为\example\solr\collection1it
(2):打开\conf\solrconfig.xmlio
(3):修改节点 替换配置中存在的requestHandler/replication和updateHandler
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<str name="replicateAfter">startup</str>
<str name="replicateAfter">commit</str>
<str name="replicateAfter">optimize</str>
<str name="confFiles">schema.xml</str>
</lst>
</requestHandler>
<updateHandler class="solr.DirectUpdateHandler2">
<autoCommit>
<maxDocs>1</maxDocs>
<maxTime>1000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
</updateHandler>
修改从节点
(1):找到须要设置从库的solrhome,找到其中须要设置的核心connection1,例如路径为\example\solr\collection1
(2):打开\conf\solrconfig.xml
(3):修改节点 替换配置中存在的requestHandler/replication和updateHandler
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="slave">
<str name="masterUrl">http://10.28.175.246:8080/solr/waiter</str>
<str name="pollInterval">00:00:20</str>
</lst>
</requestHandler>
上述操做完成后,一个Solr分布式就完成了,主库主要负责接收插入的数据,从库主要负责查询数据。
从库会在按期(pollInterval配置)到主库进行数据查询,若主库数据有修改,从库会自动进行差别同步。
在项目中引用
<bean id="concurrentUpdateSolrServer" class="org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrServer">
<constructor-arg value=" http://127.0.0.1:8080/solr/connection1" />
<constructor-arg value="8" />
<constructor-arg value="8" />
</bean>
<bean id="lbHttpSolrServer" class="org.apache.solr.client.solrj.impl.LBHttpSolrServer" >
<constructor-arg>
<array value-type="java.lang.String">
<value>http://127.0.0.1:8081/solr/connection1</value>
<value>http://127.0.0.1:8082/solr/connection1</value>
</array>
</constructor-arg>
</bean>