热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搜索引擎Solr集群部署

莫架构经验:(1)4核8G的机器,可以支持1000W条数据。(2)注意分片,不是越

莫架构经验:
(1)4核8G 的机器,可以支持1000W条数据。(2)注意分片,不是越多越好,一个分片控制在100G的数据,大于100G,考虑两个分片。(3)副本(存储数据的组件),有几台机器就创建几个副本。(4)提交一定要批量提交,单个提交不可采取。

重点内容

需要三个zookeeper节点
四个solr节点。

使用伪分布式实现solr集群。需要三个zookeeper实例,4个tomcat实例,可以在一台虚拟机上模拟。建议虚拟机1G以上内存。

这里写图片描述

Solr实例的搭建

第一步:创建4个tomcat实例,修改其端口。8080-8083
第二步:解压solr-4.10.3.tar.gz压缩包。从压缩包中复制solr.war到tomcat。
第三步:启动tomcat解压war包。把solr-4.10.3目录下example目录下的关于日志相关的jar包添加到solr工程中。
第四步:创建solrhome。修改web.xml指定solrhome的位置。

solr集群的搭建

第一步 :

把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。
客户端命令位置:/root/solr-4.10.3/example/scripts/cloud-scripts

./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf// 采坑,运行上面报错,解决方案:http://blog.csdn.net/only_wan/article/details/53678901查看配置文件是否上传成功:
[root@bogon bin]# ./zkCli.sh
Connecting to localhost:2181
[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /configs
[myconf]
[zk: localhost:2181(CONNECTED) 2] ls /configs/myconf
[admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt, _schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, _schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt, mapping-ISOLatin1Accent.txt, admin-extra.html, xslt, synonyms.txt, scripts.conf, update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, clustering, schema.xml]
[zk: localhost:2181(CONNECTED) 3]

第二步:

修改solrhome下的solr.xml文件,指定当前实例运行的ip地址及端口号。

这里写图片描述

第三步:

修改每一台solr的tomcat 的 bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:
JAVA_OPTS=”-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183”
(可以使用vim的查找功能查找到JAVA_OPTS的定义的位置,然后添加)

第四步:

重新启动tomcat。
这里写图片描述

第五步:
创建一个两片的collection,每片是一主一备。

使用以下命令创建:
http://192.168.25.154:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

这里写图片描述

这里写图片描述

第六步:

删除collection1.
http://192.168.25.154:8080/solr/admin/collections?action=DELETE&name=collection1

这里写图片描述

这里写图片描述

Solr集群的使用

public class SolrCloudTest {@Testpublic void testAddDocument() throws Exception {//创建一个和solr集群的连接//参数就是zookeeper的地址列表,使用逗号分隔String zkHost = "192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183";CloudSolrServer solrServer = new CloudSolrServer(zkHost);//设置默认的collectionsolrServer.setDefaultCollection("collection2");//创建一个文档对象SolrInputDocument document = new SolrInputDocument();//向文档中添加域document.addField("id", "test001");document.addField("item_title", "测试商品");//把文档添加到索引库solrServer.add(document);//提交solrServer.commit();}@Testpublic void deleteDocument() throws SolrServerException, IOException {//创建一个和solr集群的连接//参数就是zookeeper的地址列表,使用逗号分隔String zkHost = "192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183";CloudSolrServer solrServer = new CloudSolrServer(zkHost);//设置默认的collectionsolrServer.setDefaultCollection("collection2");solrServer.deleteByQuery("*:*");solrServer.commit();}
}

Solrj和spring集成

//修改spring的配置文件,添加集群版的配置:
<bean id&#61;"cloudSolrServer" class&#61;"org.apache.solr.client.solrj.impl.CloudSolrServer"><constructor-arg name&#61;"zkHost" value&#61;"192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183">constructor-arg><property name&#61;"defaultCollection" value&#61;"collection2">property>bean>

推荐阅读
author-avatar
山杰百云692
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有