window7环境:zookeeper+tomcat+solr(集群)

本文介绍如何搭建Solr 5.5集群环境,包括配置Zookeeper、Tomcat及Solr相关设置,并实现与Spring框架的集成,还介绍了如何添加中文解析器IKAnalyzer。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境要求:

  • jdk1.8
  • zookeeper
  • solr5.5
  • tomcat8

如图这里写图片描述

首先,安装jdk1.8.这里就不显示出来。

zookeeper安装(集群)

  • 解压zookeeper-3.4.9.tar.gz 压缩文件,并重命名解压后的文件夹,修改为zookeeper。文件如下:这里写图片描述
  • 在zookeeper 的文件夹下,新建data的空文件夹,用于保存数据
  • 在zookeeper\conf 的文件夹下,找到zoo_sample.cfg,复制一份并重命名为zoo.cfg 修改里面的配置。
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
#http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

配置文件简单解析
1、tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
2、dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
3、dataLogDir:顾名思义就是 Zookeeper 保存日志文件的目录
4、clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

  1. 修改dataDir的路径为刚刚新建的data文件夹下。
  2. 进入bin文件夹下启动zkServer.cmd 可以看到启动成功。
  3. 集群:则复制zookeeper的文件夹复制三份,修该zoo.cfg文件。端口分别修改为2181,2182,2183, 然后添加如下内容:
  4. server.1=localhost:2887:3887
    server.2=localhost:2888:3888
    server.3=localhost:2889:3889

    然后分别在data文件夹添加文件 myid 内容分别对应1、2、3。
    刚刚启动一个zookeeper会报错,正常。启动cmd控制端,输入telnet 127.0.0.1 2181 然后输入stat。如果出现如下:这里写图片描述 表示建立成功。

solr

  1. 解压solr-5.5.4.zip,将 solr-5.5.4\server\solr-webapp\webapp 文件夹底下的 webapp 复制到 tomcat 对应目录底下的 webapps 中,并将文件夹名字改为 solr
  2. 将 solr-5.5.4\server\lib\ext 文件夹底下的lib全部复制到tomcat底下的 solr/WEB-INF/lib/ 中
  3. 将solr-5.5.4\server\resources 下的log4j.properties文件复制到solr/WEB-INF/classes目录下,如果该目录不存在则新建classes。
  4. 在tomcat同一级的目录下新建solrhome文件夹,把将solr-solr-5.5.4\server 下的 solr 文件夹下内容复制到solrhome 目录下 , 这个就是 solrhome(存放的检索数据)
  5. 设置solrhome, 编辑 D:\tomcat\apache-tomcat-7.0.40\webapps\solr\WEB-INF\web.xml ;
    solr 启动的时候会去这个目录下加载配置信息
<env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>F:\\solrcloud\\solrhome8080</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

修改env-entry-valued值:配置为solrhome的文件地址

  1. 启动tomcat(startup.bat),登入地址:http://127.0.0.1:8080/solr/index.html#/这里写图片描述
    7.则表示单机版的solr新建成功。

solr集群

  1. 复制tomcat文件,分别为tomcat8081、tomcat8082、tomcat8083
    2.修改tomcat下的server.xml的
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

让端口不会重复。
3.分别复制solrhome,复制三份。修改tomcat\webapps\solr\WEB-INF\web.xml下的solrhome,对应到各自的地址。
4.配置zookeeper和各个tomcat进行关联:首先确定leader节点,需要在server目录下(我的是apache-tomcat-8.5.5)的bin/catalina.bat中添加一行

set JAVA_OPTS=-Dbootstrap_confdir=E:\Tools\solr_home\core0\conf -Dcollection.configName=clusterconf -DzkRun -DzkHost=localhost:2181 -DnumShards=2

也可以用下面语句,把信息提交到zookeeper文件上管理。

java -classpath F:\solrcloud\tomcat8080\webapps\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.56.1:2181,192.168.56.1:2181,192.168.56.1:2181 -confdir F:\solrcloud\solrhome8080\configsets\basic_configs\conf\ -confname clusterconf
solr将文件同步到zookeeper集群中

5.指定其他三个为follower节点,在各自的server目录下的bin/catalina.bat中添加一行

set JAVA_OPTS=-DzkRun -DzkHost=localhost:2181 -DnumShards=2 

6.分别修改solrhome/solr.xml,把这里写图片描述port对应到各自tomcat下的端口。
7.启动tomcat。登入地址,这里写图片描述则表示创建成功。

中文解析器

8.可以加入IKAnalyzer,这里用的是IKAnalyzer-5.0.jar,复制到tomcat底下的 solr/WEB-INF/lib/ 中,把IKAnalyzer.cfg.xml、mydict.dic、stopword.dic文件复制到solr/WEB-INF/classes目录下。
9.在F:\solrcloud\solrhome8080\configsets\basic_configs\conf找到managed-schema文件,添加如下代码:

<fieldType name="text_ik" class="solr.TextField">   
     <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>   
 </fieldType>

同时可以添加需要索引的字段

<field name="item_title" type="text_ik" indexed="true" stored="true"/>
        <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
        <field name="item_price"  type="long" indexed="true" stored="true"/>
        <field name="item_image" type="string" indexed="false" stored="true" />
        <field name="item_updated" type="text_ik" indexed="true" stored="false" />

        <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
        <copyField source="item_title" dest="item_keywords"/>
        <copyField source="item_sell_point" dest="item_keywords"/>

然后,上传到zookeeper集群中。

java -classpath F:\solrcloud\tomcat8080\webapps\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.56.1:2181,192.168.56.1:2181,192.168.56.1:2181 -confdir F:\solrcloud\solrhome8080\configsets\basic_configs\conf\managed-schema -confname clusterconf

重新启动tomcat,如果看到如图内容,则表示成功。
这里写图片描述

spring结合

<!-- 集群版 -->
2     <bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
3         <constructor-arg name="zkHost" value="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"></constructor-arg>
4         <property name="defaultCollection" value="collection2"></property>
5     </bean>
 1 public class SolrCloudTest {
 2 
 3     @Test
 4     public void testAddDocument() throws Exception {
 5         //创建一个和solr集群的连接
 6         //参数就是zookeeper的地址列表,使用逗号分隔
 7         String zkHost = "192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183";
 8         CloudSolrServer solrServer = new CloudSolrServer(zkHost);
 9         //设置默认的collection
10         solrServer.setDefaultCollection("collection2");
11         //创建一个文档对象
12         SolrInputDocument document = new SolrInputDocument();
13         //向文档中添加域
14         document.addField("id", "test001");
15         document.addField("item_title", "测试商品");
16         //把文档添加到索引库
17         solrServer.add(document);
18         //提交
19         solrServer.commit();
20     }
21     
22     @Test
23     public void deleteDocument() throws SolrServerException, IOException {
24         //创建一个和solr集群的连接
25         //参数就是zookeeper的地址列表,使用逗号分隔
26         String zkHost = "192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183";
27         CloudSolrServer solrServer = new CloudSolrServer(zkHost);
28         //设置默认的collection
29         solrServer.setDefaultCollection("collection2");
30         
31         
32         solrServer.deleteByQuery("*:*");
33         solrServer.commit();
34     }
35 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值