下面总结一下solr的相关概念及单机版和集群版的搭建过程:
【概念】
solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。solr 包装并扩展了 Lucene,所以solr的基本上沿用了Lucene的相关术语。更重要的是,solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对solr 进行适当的配置,某些情况下可能需要进行编码,solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用solr 创建的索引。Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
solr的主要特性有:灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
【单机版搭建】
第一步:需要先上传jdk和tomcat到服务器,并解压安装
第二步:上传solr到服务器,并解压
第三步:把dist/solr-4.10.3.war(该war包为solr服务器)部署到tomcat下,即将solr-4.10.3.war复制到/usr/local/solr/tomcat/webapps/下并重命名为solr.war
第四步:解压缩solr.war包,启动tomcat即可解压war,启动命令:bin/startup.sh
第五步:需要把/root/solr-4.10.3/example/lib/ext目录下的所有的jar包添加到solr工程中。
第六步:创建solrhome。把/root/solr-4.10.3/example/solr文件夹复制一份作为solrhome
第七步:告诉solr服务solrhome的位置。需要修改web.xml
第八步:启动tomcat
solr单机版单机完成,在浏览器中访问http://192.168.25.133:8080/solr,即可访问solr
【集群搭建】
在单机版的基础上搭建集群版,这里只是伪集群
第一步:在/usr/local下新建文件夹solr-cloud,并在solrcloud下复制四份单机版时使用的tomcat,分别修改其端口号不能冲突。这里设置四个tomcat端口号为:8080~8083
修改每个tomcat下的conf/server.xml文件的port:需要修改三个地方
第二步:向tomcat下部署solr。把单机版的solr(/usr/local/solr/tomcat/webapps)工程复制到tomcat4个实例下即可。
第三步:为每个solr实例创建一solrhome。把单机版的solrhome复制四份
第四步:为每个solr实例关联对应的solrhome。修改web.xml
第五步:修改每个solrhome下的solr.xml文件。修改host、hostPort两个属性。分别是对应的ip及端口号
第六步:把配置文件上传到zookeeper。zookeeper集群搭建看这里
把/usr/local/solr-cloud/solrhome01/collection1/conf目录上传到zookeeper。(前提:需要zookeeper集群已经启动。)
具体执行命令:./zkcli.sh -zkhost 192.168.25.133:2181,192.168.25.133:2182,192.168.25.133:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
第七步:查看是否上传成功,使用zookeeper的zkCli.sh命令
第八步:告诉solr实例zookeeper的位置。需要修改tomcat的catalina.sh添加JAVA_OPTS="DzkHost=192.168.25.133:2181,192.168.25.133:2182,192.168.25.133:2183"
分别修改tomcat01,tomcat02,tomcat03,tomcat04的catalina.sh
第九步:启动每个solr实例,可以编写统一启动solr的启动文件:
可以通过:命令tail -f /usr/local/solr-cloud/tomcat01/logs/catalina.out查看tomcat启动日志
现在便可以访问solr集群:
第十步:集群分片
将集群分为两片,每片两个副本,访问此链接即可完成分片:
http://192.168.25.133:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
分片成功:
第十一步:删除不用collection1
http://192.168.25.133:8080/solr/admin/collections?action=DELETE&name=collection1
删除成功:
【小结】
SolrCloud是基于solr和zookeeper的分布式搜索方案,所有需要搭建solr集群和zookeeper集群,这篇博客只是讲了一下solr集群的搭建,之后会讲一下solrCloud的具体实现。