简介
什么是SolrCloud
SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使 用SolrCloud来满足这些需求。
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。
它有几个特色功能:
1)集中式的配置信息
2)自动容错
3)近实时搜索
4)查询时自动负载均衡
Zookeeper是个什么玩意?
顾名思义zookeeper就是动物园管理员,他是用来管hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员, Apache Hbase和 Apache Solr 的分布式集群都用到了zookeeper;Zookeeper:是一个分布式的、开源的程序协调服务,是hadoop项目下的一个子项目。
搭建步骤 :
1、首先搭建Zookeeper集群 https://blog.csdn.net/zenmin2015/article/details/86415446
2、复制四个tomcat 并且修改不同端口号
3、把solr的webapp放入tomcat的webapps内
4、新建四个solrhome文件夹
5、修改solrhome/solr.xml文件 指定ip和端口
6、修改webapps/solr/solr.xml指定solrhome目录
7、修改每个Tomcat的bin/catalina.sh文件中的JAVA_OPTS增加zk节点
如
JAVA_OPTS="-DzkHost“192.168.25.133:2182,192.168.25.133:2183,192.168.25.133:2184"
8、使用工具上传Solrhome的配置文件到Zookeeper进行管理
工具位置在/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh
执行命令
./zkcli.sh -zkhost 192.168.25.133:2182,192.168.25.133:2183,192.168.25.133:2184 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
所有节点共用这一个配置文件
9、连接Zookeeper Zookeeper/bin 默认不带-server参数是2181端口
./zkCli.sh -server 192.168.25.133:2182
10、创建新的Collection进行分片处理。
http://192.168.25.154:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
完成。
Java连接集群:
@Test
public void testSolrCloud() throws SolrServerException, IOException {
// 创建CloudSolrServer 包含Zookeeper的节点ip 注意 这是不是直接连接Solr了 而是连接的Zookeeper节点
CloudSolrServer cloudSolrServer = new CloudSolrServer(
"192.168.25.133:2182,192.168.25.133:2183,192.168.25.133:2184");
// 设置默认Collection
cloudSolrServer.setDefaultCollection("collection2");
// 创建一个文档对象
SolrInputDocument document = new SolrInputDocument();
// 添加域
document.addField("id", "test11111");
// 添加文档
cloudSolrServer.add(document);
// 提交
cloudSolrServer.commit();
}
Spring整合版的SpringData Solr文档:
https://docs.spring.io/spring-data/solr/docs/4.0.4.RELEASE/reference/html/