Solr: cloudSolr +zookeeper

关于solr+zookeeper 集群,配置文档可参考:(转)https://blog.csdn.net/XiaHeShun/article/details/82026813

其中需要注意的是

1.修改solr配置文件:

<solrcloud>
    <str name="host">solr_IP</str>
    <int name="hostPort">8983</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>

2.

为了 zookeeper 统一管理配置文件。需要把 solrhome下collection1/conf 目录上传到 zookeeper。

/scripts/cloud-scripts目录 ,执行下列命令
 

./zkcli.sh -zkhost ZK_IP:2181 -cmd upconfig -confdir /collection/conf -confname myconf

其中:zk_ip为ZK的ip,2181为ZK端口。

启动solr

集群
./bin/solr start -c -z ZK_IP_1:PORT_1,ZK_IP_2:PORT_2,ZK_IP_3:PORT_3
单机
./bin/solr start -c -z ZK_IP:PORT

3.cloudSolr + spring

配置文件spring-solr

<bean id="cloudSolrClient" class="org.apache.solr.client.solrj.impl.CloudSolrClient">
	<constructor-arg index="0" value="127.0.0.1:2181"/>
	<property name="defaultCollection" value="core"/>
</bean>

index=0 对应的是ZK的 ip:port

4.获取solr连接对象

public class ExtractorContextLoaderHelper implements ApplicationContextAware{
	private static ApplicationContext applicationContext;
	
	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}


	@Override
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		ExtractorContextLoaderHelper.applicationContext=applicationContext;
	}
	
	/**
	 * 获取定义在Spring配置文件里的bean实例
	 * @param beanName Spring配置文件里的bean注册名
	 * @return bean实例(没有找到返回null)
	 */
	public static Object getBean(String beanName) {
		return applicationContext.getBean(beanName);
	}

}
public class SolrConn {

	private static CloudSolrClient solr;
	
	public static CloudSolrClient getConnet(){
		
		try {
			ApplicationContext aContext = ExtractorContextLoaderHelper.getApplicationContext();
			solr=aContext.getBean(CloudSolrClient.class);
			if(null == solr){
				throw new Exception("连接失败");
			}
			String zkHost=solr.getZkHost();// 获取zk地址
			Set<String> liveNodes = solr.getZkStateReader().getClusterState().getLiveNodes();//获取solr连接地址
		} catch (BeansException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return solr;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值