solr集群搭建和 java调用 solr集群

solrClund 是solr提供的分布式搜索方案
solrClund 是基于solr和zookeeper的分布式搜索方案,
主要思想是使用zookeeper作为集群的配置中心
特色功能:
1.集中式的配置信息
2.自动容错
3.近实时搜索
4.查询时自动负载均衡

zookeeper:动物园管理员,用于管hadoop(大象)、Hive(蜜蜂)的管理员

SolrCloud结构
需要由多台服务器共同完成索引和搜索任务
实现的思路是将索引数据进行shard(分片) 拆分,每个分片由多台的服务器共
同完成。当一个索引或搜索请求过来时会分别从不同的shard的服务器中操作
索引。
solrCloud需要 solr基于zookeeper部署,zookeeper是一个集群管理软件,
由solrCloud需要由多台服务器组成。由zookeeper来进行协调管理
多个分片相加起来才是一个完成的索引库
solr集群搭建和 java调用 solr集群_第1张图片

solr集群搭建和 java调用 solr集群_第2张图片

服务器数量:
zookeeper:3台服务器

solr:4台服务器

集群搭建
zookeeper集群:
zookeeper有一个选举机制,选举谁是leader,谁是follower,成为主
节点,需要得到半数以上的投票。所以尽可能为奇数节点

1.创建三个zookeeper实例:
2.分别在zookeeper文件夹下,创建data文件夹,下面创建myid(内容为1、2、3)

3.在E:\solr\solrColud\zookeeper1\conf 下将zoo_sample.cfg更名为zoo.cfg

#myid文件的位置
dataDir=E:/solr/solrColud/zookeeper1/data
# the port at which the clients will connect

#zookeeper对外提供的端口号:
clientPort=2181

#集群所有节点的信息
# server.1:代表第一台zookeeper,1为myid文件中的值,
#两个端口号:1个投票的,1个选举的
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883

//第二台和第三台则只需要修改myid的文件位置和端口号

4.启动zookeeper,三台都启动成功,则不再报错

solr实例

1.启动4个tomcat实例
2.搭建4个单机版solr实例

3.需改tomcat的端口号:
8080
8081
8082
8083
4.需改solrhome的位置

集群搭建
1.让zookeeper集群集中管理配置文件,把配置文件上传到zookeeper

2.将E:\solr\solrColud\solrhome1\collection1\conf 下面的内容上传到zookeeper集群中

3.在cmd 中 ,命令上传文件:

java -classpath E:\solr\solrColud\apache-tomcat1\webapps\solr\WEB-INF\lib/*  org.apache.solr.cloud.ZkCLI  -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183  -cmd upconfig -confdir E:\solr\solrColud\solrhome1\collection1\conf  -confname myconf

4.查看上传的文件:有myconf说明上传成功

solr集群搭建和 java调用 solr集群_第3张图片

5.修改每个solrhome下的solr.xml文件

<solr>

  <solrcloud>
  //solr每个实例对应的ip
    <str name="host">${host:127.0.0.1}str> 
//tomcal的端口
    <int name="hostPort">${jetty.port:8080}int>
    <str name="hostContext">${hostContext:solr}str>
    <int name="zkClientTimeout">${zkClientTimeout:30000}int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}bool>
  solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:0}int>
    <int name="connTimeout">${connTimeout:0}int>
  shardHandlerFactory>

solr>

6.告诉每个solr实例,zookeeper集群的位置
修改每一台 tomcat的bin目录下catalina.bat文件中加入DzkHost指定
zookeeper服务器地址

set JAVA_OPTS="-DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"

7.启动所有tomcat

8.访问solr
solr集群搭建和 java调用 solr集群_第4张图片

9.现在只有一片,1个主,三个备

10.使用命令进行分片,两分的集群

http://127.0.0.1:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

11.表示创建切片成功,每一片都是一主一备
solr集群搭建和 java调用 solr集群_第5张图片

12删除集群的命令:

http://127.0.0.1:8080/solr/admin/collections?action=DELETE&name=collection1

solr集群搭建和 java调用 solr集群_第6张图片

java调用 solr集群
//添加文档
solr集群搭建和 java调用 solr集群_第7张图片

你可能感兴趣的:(搜索引擎)