zoukankan      html  css  js  c++  java
  • solr集群solrCloud的搭建

    solr集群solrCloud的搭建

     上一章讲了solr单机版的搭建,本章将讲解sole集群的搭建。solr集群的搭建需要使用到zookeeper,搭建参见zookeeper集群的安装

    一、solr实例的搭建

    1. tomcat安装

       这里我们需要4个tomcat,分别是tomcat1,2,3,4

      

      同时修改tomcat1,2,3,4的端口为8080-8083。保证两个tomcat可以正常运行不发生端口冲突。

    2.解压solr-4.10.3.tar.gz压缩包。从压缩包中复制/solr-4.10.3/dist/solr-4.10.3.war到tomcat1,并重命名为solr.war。

     

      

    3.启动tomcat,解压solr.war。解压成功后关闭tomcat,删除solr.war

    4.将solr日志相关的jar包拷贝到解压的solr项目的lib包中

      

    5.创建solrhome文件

      这里直接拷贝单机版中创建的solrhome

    6.修改tomcat1-4中的solr的web.xml对应的env-entry-value值为/usr/local/solrcloud/solrhome1-4,指定对应的solrhome

      

    7.其他的配置参见solr单机版的搭建

     二、solr集群的搭建

      1.把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。

        使用solr安装包中的/opt/mysoft/solr-4.10.3/example/scripts/cloud-scripts中的zkcli.sh

      

      运行命令

    ./zkcli.sh -zkhost 192.168.198.130:2181,192.168.198.130:2182,192.168.198.130:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf

      查看运行是否成功,使用zookeeper中的脚本

    2.修改solrhome1-4下的solr.xml文件,指定当前实例运行的ip地址及端口号8080-8083。

     

    3.修改每一台solr的tomcat 的 bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:

    JAVA_OPTS="-DzkHost=192.168.198.130:2181,192.168.198.130:2182,192.168.198.130:2183"

    4.重启tomcat

     查看运行结果

    5.创建一个两片的collection,每片是一主一备

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

    回到主界面查看

    6.删除collection1

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

    查看主界面

    三、java测试代码

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

    四、spring集成

    <bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer"> 
            <constructor-arg name="zkHost" value="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"></constructor-arg> 
            <property name="defaultCollection" value="collection2"></property>
    </bean>

    java代码使用方法不变,因为SolrServer是CloudSolrServer的父类

     
    分类: java服务器
  • 相关阅读:
    Django——不同版本
    04爬取拉勾网Python岗位分析报告
    24 两两交换链表中的节点
    UniGUI学习之UniImage(39)
    Delphi7开发简单文件传输
    Javaday03(补充day02运算符,流程控制)
    java中代码块,构造方法和普通方法的代码执行顺序
    +=隐式类型转换
    关于switch中的default
    Java操作JSON数据(5)--jettison操作JSON数据
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5319400.html
Copyright © 2011-2022 走看看