精华内容
下载资源
问答
  • Solr集群

    2019-10-09 22:02:08
    掌握solr集群的搭建 1.Solr集群-SolrCloud介绍 (1)什么是SolrCloud? SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布 式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的...

    学习主题:Solr
    学习目标:
    掌握solr集群的搭建

    1.Solr集群-SolrCloud介绍

    (1)什么是SolrCloud?

    SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布
    式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用
    SolrCloud 的,当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 来满足这些
    需求。

    (2)SolrCloud的原理是什么?
    SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案,它的主要思想是使用
    Zookeeper 作为集群的配置信息中心。

    2.Solr集群-创建集群

    (1)如何搭建Solr集群?

    4 安装 Solr 集群环境
    4.1需求:
    1) 在 192.168.70.147 环境中安装 zookeeper 集群(已安装)
    2) 创建 4 个 tomcat 实例,修改其端口为 8080-8083
    3) 使用已安装好的单机版 solr 作为集群的节点使用
    4.2创建 solrcloud 目录
    mkdir solrcloud
    4.3安装 Zookeeper 集群
    略…
    4.4安装 4 个 tomcat 实例并将 tomcat 与索引库拷贝到 solrCloud 目录中
    4.5修改 tomcat 端口
    4.6修改 solr 服务中指向 solr 索引库的路径
    5 创建集群
    5.1上传索引库配置文件
    把 solrhome 中的配置文件上传到 zookeeper 集群。使用 zookeeper 的客户端上传
    ./zkcli.sh -zkhost 192.168.92.135:2181, 192.168.92.135:2182, 192.168.92.135:2183 -cmd
    upconfig -confdir /usr/local/solrcloud/solrhome1/solr/collection1/conf -confname myconf
    5.2修改 solrhome 下的 solr.xml 文件,指定当前实例运行的 ip
    地址及端口号。5.3修改每一台 solr 的 tomcat 的 bin 目录下 catalina.sh 文件中 加入 DzkHost 指定 zookeeper 服务器地址
    JAVA_OPTS="-DzkHost=192.168.92.135:2181,192.168.92.135:2182,192.168.92.135 :2183"
    (可以使用 vim 的查找功能查找到 JAVA_OPTS 的定义的位置,然后添加)
    注意不能含有空格

    (2)如何将Solr集群中的索引库分为两片?

    创建一个新的 collection,并分两片,每片是一主一备。
    使用以下命令创建:
    http://192.168.92.135:8080/solr/admin/collections?action=CREATE&name=collec
    tion2&numShards=2&replicationFactor=2

    3.Solr集群-在集群中添加文档

    (1)如何向Solr集群中添加文档?

    /**
     * 集群版:向索引库中添加文档
     */
    public static void solrCloudAdd() throws Exception{
        //1.获得zookeeper地址
        String zkHost="192.168.92.135:2181,192.168.92.135:2182,192.168.92.135:2183";
        //2.创建solrCloud对象
        CloudSolrServer cloud=new CloudSolrServer(zkHost);
        //3.给定索引库
        cloud.setDefaultCollection("collection2");
        for (int i=0;i<10;i++){
            //4.创建文档对象
            SolrInputDocument document=new SolrInputDocument();
            //5.向文档内添加数据内容
            document.addField("id","solr"+i);
            document.addField("item_title","web服务--索引库"+i);
            document.addField("item_price",1000+i);
            //6.把文档内容数据插入到solr的索引库
            cloud.add(document);
        }
    
        //7.提交事务
        cloud.commit();
        cloud.shutdown();//关闭线程
    }
    

    4.Solr集群-删除集群中的文档

    (1)如何删除Solr集群中的文档?

    /**
     * 集群版:删除索引库中的文档
     */
    public  static void solrCloudDel() throws Exception{
        //1.获得zookeeper地址
        String zkHost="192.168.92.135:2181,192.168.92.135:2182,192.168.92.135:2183";
        //2.创建solrCloud对象
        CloudSolrServer cloud =new CloudSolrServer(zkHost);
        //3.给定索引库
        cloud.setDefaultCollection("collection2");
        //4.删除索引库中文档
            //1.根据主键删除
            //cloud.deleteById("solr");
            //2.根据查询删除
            cloud.deleteByQuery("*:*");
       //5.提交事务
       cloud.commit();
       cloud.shutdown();
    }
    
    
    5.Solr集群-查询集群中的文档
    (1)如何查询Solr集群中的文档? 
    /**
     * 集群版:查询索引库中文档
     */
    public static void solrCloudFind() throws Exception{
        //1.获得zookeeper对象
        String zkSost="192.168.92.135:2181,192.168.92.135:2182,192.168.92.135:2183";
        //2.创建solrCloud对象
        CloudSolrServer cloud=new CloudSolrServer(zkSost);
        //3.给定索引库
        cloud.setDefaultCollection("collection2");
        //4.创建查询对象
        SolrQuery query = new SolrQuery();
        //5.设置查询条件
        query.setQuery("web");//查询关键字条件
        query.set("df","item_keywords");//在哪个域查询
        query.setStart(0);//分页查询开始
        query.setRows(10);//分页查询多少
        //6.执行查询:封装结果集
        QueryResponse response = cloud.query(query);
            //获得结果集
            SolrDocumentList list = response.getResults();
            //获得总条数
            System.out.println("总条数:"+list.getNumFound());
            //遍历结果集
            for(SolrDocument var :list){
                System.out.println(var.get("item_title"));
                System.out.println(var.get("item_price"));
            }
    
    }
    
    展开全文
  • solr集群

    2018-02-19 23:33:15
    需要实现的solr集群架构 Zookeeper作为集群的管理工具。 1、集群管理:容错、负载均衡。 2、配置文件的集中管理 3、集群的入口 需要实现zookeeper 高可用。需要搭建集群。建议是奇数节点。需要三个zookeeper...

    需要实现的solr集群架构

    这里写图片描述

    Zookeeper作为集群的管理工具。
    1、集群管理:容错、负载均衡。
    2、配置文件的集中管理
    3、集群的入口

    需要实现zookeeper 高可用。需要搭建集群。建议是奇数节点。需要三个zookeeper服务器。

    搭建solr集群需要7台服务器。

    搭建伪分布式:
    需要三个zookeeper节点
    需要四个tomcat节点。

    建议虚拟机的内容1G以上。


    Zookeeper集群搭建

    第一步:需要安装jdk环境。
    第二步:把zookeeper的压缩包上传到服务器。
    第三步:解压缩。
    第四步:把zookeeper复制三份。

    [root@localhost ~]# mkdir /usr/local/solr-cloud
    [root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper01
    [root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper02
    [root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper03

    这里写图片描述
    这里写图片描述

    第五步:在每个zookeeper目录下创建一个data目录。
    第六步:在data目录下创建一个myid文件,文件名就叫做“myid”。内容就是每个实例的id。

    [root@123 zookeeper1]# mkdir data
    [root@123 data]# touch myid

    在文件中写数字1,其他服务器写其他的数字

    [root@123 data]# vim myid

    //也可以这样,把输出写到这个文件下面

    [root@123 zookeeper2]# eacho 2 > data/myid

    这里写图片描述
    这里写图片描述
    这里写图片描述

    第七步:修改配置文件。把conf目录下的zoo_sample.cfg文件改名为zoo.cfg
    1.在conf文件夹里面的zoo_sample.cfg 改成 zoo.cfg

    • [root@123 conf]# cp -r zoo_sample.cfg zoo.cfg
    • [root@123 conf]# rm -rf zoo_sample.cfg
      这里写图片描述

    2.zoo.cfg修改配置文件
    这里写图片描述

    //2881 节点通信的端口,3881 节点投票端口
    server.1=192.168.25.154:2881:3881
    server.2=192.168.25.154:2882:3882
    server.3=192.168.25.154:2883:3883

    其他的同上

    第八步:启动每个zookeeper实例。
    启动bin/zkServer.sh start
    1.创建一个启动脚本
    [root@123 solr-cloud]# vim start-all.sh

    cd zookeeper1/bin
    ./zkServer.sh start
    cd ../../
    cd zookeeper2/bin
    ./zkServer.sh start
    cd ../../
    cd zookeeper3/bin
    ./zkServer.sh start
    cd ../../
    cd zookeeper1/bin
    ./zkServer.sh stop
    cd ../../
    cd zookeeper2/bin
    ./zkServer.sh stop
    cd ../../
    cd zookeeper3/bin
    ./zkServer.sh stop
    cd ../../

    2.修改权限
    [root@123 solr-cloud]# chmod u+x start-all.sh

    查看zookeeper的状态:
    bin/zkServer.sh status


    Solr集群的搭建

    第一步:创建四个tomcat实例。每个tomcat运行在不同的端口。8180、8280、8380、8480
    1.[root@123 solr-cloud]# vim tomcat1/conf/server.xml
    2.修改所有的端口号
    这里写图片描述
    这里写图片描述

    第二步:部署solr的war包。把单机版的solr工程复制到集群中的tomcat中。
    第三步:为每个solr实例创建一个对应的solrhome。使用单机版的solrhome复制四份。
    第四步:需要修改solr的web.xml文件。把solrhome关联起来。

    [root@123 solr-cloud]# vim tomcat1/webapps/solr/WEB-INF/web.xml    

    这里写图片描述

    第五步:配置solrCloud相关的配置。每个solrhome下都有一个solr.xml,把其中的tomcat ip及端口号配置好。
    这里写图片描述

    第六步:修改tomcat/bin目录下的catalina.sh 文件,关联solr和zookeeper。把此配置添加到配置文件中:

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

    第七步:让zookeeper统一管理配置文件。需要把solrhome/collection1/conf目录上传到zookeeper。上传任意solrhome中的配置文件即可。
    这里写图片描述
    使用工具上传配置文件:/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh

    ./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf

    查看zookeeper上的配置文件:
    使用zookeeper目录下的bin/zkCli.sh命令查看zookeeper上的配置文件:

    [root@localhost bin]# ./zkCli.sh 

    查看指定的ip和端口

    [root@123 bin]# ./zkCli.sh -server 192.168.31.61:2182

    查看配置文件

    [zk: localhost:2181(CONNECTED) 0] ls /
    [configs, zookeeper]
    [zk: localhost:2181(CONNECTED) 1] ls /configs
    [myconf]
    [zk: localhost:2181(CONNECTED) 2] ls /configs/myconf

    这里写图片描述

    退出:

    [zk: localhost:2181(CONNECTED) 3] quit

    这里写图片描述

    第八步:启动每个tomcat实例。要包装zookeeper集群是启动状态。
    第九步:访问集群
    这里写图片描述

    第十步:创建新的Collection进行分片处理。
    name=collection2&numShards=2&replicationFactor=2 – 名字叫collection2,分成两片,每片两个机子,在浏览器中直接使用

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

    这里写图片描述
    这里写图片描述

    第十一步:删除不用的Collection。

    http://192.168.25.154:8180/solr/admin/collections?action=DELETE&name=collection1

    这里写图片描述
    这里写图片描述


    使用solrJ操作集群

    package cn.test.solrJTest;
    
    import org.apache.solr.client.solrj.SolrQuery;
    import org.apache.solr.client.solrj.SolrServer;
    import org.apache.solr.client.solrj.impl.CloudSolrServer;
    import org.apache.solr.client.solrj.impl.HttpSolrServer;
    import org.apache.solr.client.solrj.response.QueryResponse;
    import org.apache.solr.common.SolrDocument;
    import org.apache.solr.common.SolrDocumentList;
    import org.apache.solr.common.SolrInputDocument;
    import org.junit.Test;
    
    /**
     * solrJ使用集群方法
     * @author yuhf
     *
     */
    public class SolrJCloud {
    
        /**
         * 添加
         * @throws Exception
         * @Test
         */
    
        public void testAddDocument() throws Exception {
            //创建一个集群的连接,应该使用CloudSolrServer创建。
            CloudSolrServer solrServer = new CloudSolrServer("192.168.31.61:2181,192.168.31.61:2182,192.168.31.61:2183");
            //zkHost:zookeeper的地址列表
            //设置一个defaultCollection属性。
            solrServer.setDefaultCollection("collection2");
            //创建一个文档对象
            SolrInputDocument document = new SolrInputDocument();
            //向文档中添加域
            document.setField("id", "solrcloud01");
            document.setField("item_title", "测试商品01");
            document.setField("item_price", 123);
            //把文件写入索引库
            solrServer.add(document);
            //提交
            solrServer.commit();
    
        }
    
        /**
         * 查询
         * @throws Exception
         * @Test
         */
    
        public void testQueryDocument() throws Exception {
            //创建一个CloudSolrServer对象
            CloudSolrServer cloudSolrServer = new CloudSolrServer("192.168.31.61:2181,192.168.31.61:2182,192.168.31.61:2183");
            //设置默认的Collection
            cloudSolrServer.setDefaultCollection("collection2");
            //创建一个查询对象
            SolrQuery query = new SolrQuery();
            //设置查询条件
            query.setQuery("*:*");
            //执行查询
            QueryResponse queryResponse = cloudSolrServer.query(query);
            //取查询结果
            SolrDocumentList solrDocumentList = queryResponse.getResults();
            System.out.println("总记录数:" + solrDocumentList.getNumFound());
            //打印
            for (SolrDocument solrDocument : solrDocumentList) {
                System.out.println(solrDocument.get("id"));
                System.out.println(solrDocument.get("title"));
                System.out.println(solrDocument.get("item_title"));
                System.out.println(solrDocument.get("item_price"));
            }
        }
    
        /**
         * 删除
         * @throws Exception
         * 
         */
        @Test
        public void delect() throws Exception{
    
            //创建一个CloudSolrServer对象
            //org.apache.solr.client.solrj.impl.CloudSolrServer
            CloudSolrServer cloudSolrServer = new CloudSolrServer("192.168.31.61:2181,192.168.31.61:2182,192.168.31.61:2183");
            //设置默认的Collection
            cloudSolrServer.setDefaultCollection("collection2");
            //删除文档
            //solrServer.deleteById("doc01");
            //这个是根据属性删除,两个是一样的
            cloudSolrServer.deleteByQuery("*:*");
            //提交
            cloudSolrServer.commit();
        }
    }
    

    使用spring配置

    <!--  添加一个bean httpSolrServer 这个是子类  SolrServer是父类  这个是单机版-->
        <!--
        <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
            <constructor-arg name="baseURL" value="http://192.168.31.61:8080/solr/collection1"></constructor-arg>
        </bean>
          -->
          <!-- 集群版配置 -->
          <bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
            <constructor-arg name="zkHost" value="192.168.31.61:2181,192.168.31.61:2182,192.168.31.61:2183"></constructor-arg>
            <property name="defaultCollection" value="collection2"></property>
          </bean>


    在其感谢黑马资料,有很多借鉴黑马资料

    展开全文
  • solr集群搭建

    2017-03-12 09:54:04
    solr集群
  • 前言集群搭建好了,现在需要管理集群,我们使用solrj,用java代码操作solr集群。导入jar包引入solr-solrj.jar(solr-4.10.3的dist目录下)操作数据1、添加数据public void addDocument() throws Exception{//创建一个...

    前言

    集群搭建好了,现在需要管理集群,我们使用solrj,用java代码操作solr集群。

    导入jar包

    引入solr-solrj.jar(solr-4.10.3的dist目录下)

    操作数据

    1、添加数据

    public void addDocument() throws Exception{

    //创建一个集群的连接,应该使用CloudSolrServer创建

    CloudSolrServer solrServer = new CloudSolrServer("192.168.25.163:2181,192.168.25.163:2182,192.168.25.163:2183");

    //zkHost:zookeeper的地址列表

    //设置一个defaultCollection对象

    solrServer.setDefaultCollection("collection2");

    //创建一个文档对象

    SolrInputDocument document = new SolrInputDocument();

    //向文档中添加域

    document.setField("id", "solrcloud01");

    document.setField("item_title", "测试商品01");

    document.setField("item_price", 100);

    //把文件写入到索引库

    solrServer.add(document);

    //提交

    solrServer.commit();

    }

    2、查询数据

    public void queryDoucment() throws Exception{

    //创建一个CloudSolrServer对象

    CloudSolrServer cloudSolrServer = new CloudSolrServer("192.168.25.163:2181,192.168.25.163:2182,192.168.25.163:2183");

    //设置默认的Collection

    cloudSolrServer.setDefaultCollection("collection2");

    //创建一个查询对象

    SolrQuery query = new SolrQuery();

    //设置查询条件

    query.setQuery("*:*");

    //执行查询

    QueryResponse queryResponse = cloudSolrServer.query(query);

    //取查询结果

    SolrDocumentList solrDocumentList = queryResponse.getResults();

    System.out.println("总记录数:" + solrDocumentList.getNumFound());

    //打印

    for (SolrDocument solrDocument : solrDocumentList) {

    System.out.println(solrDocument.get("id"));

    System.out.println(solrDocument.get("title"));

    System.out.println(solrDocument.get("item_title"));

    System.out.println(solrDocument.get("item_price"));

    }

    }

    总结

    使用java代码操作solr集群完成。

    展开全文
  • Solr 集群

    2018-07-20 18:19:00
    https://www.cnblogs.com/1315925303zxz/p/6372004.html?utm_source=itdadao&utm_medium=referral 转载于:https://www.cnblogs.com/eason-d/p/9343022.html
    展开全文
  • solr 集群

    千次阅读 2016-05-01 18:38:44
    SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时...
  • 声明:写此博客是为了记录并分析solr集群搭建的全过程,防止后期时间久了不用会遗忘。希望同时也能帮到有需要的朋友因为是在虚拟机上模拟安装,所以采用伪集群的方式进行安装,即将如果是真正的生产环境,将伪集群的...
  • Solr集群环境

    2017-05-12 11:35:07
    Solr集群安装环境
  • 搭建Solr集群

    2018-04-29 08:36:22
    搭建Solr集群 淘淘商城 第七天 好资源
  • solr集群安装

    2018-03-02 11:36:51
    solr集群安装,本人操作一步写一步,绝对可靠,快下载吧
  • solr集群搭建和 java调用 solr集群 2016-02-20 23:25 1213人阅读 评论(0) 收藏 举报  分类: 搜索引擎(7)  版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • 文章目录zookeeper集群、solr集群、redis集群 zookeeper集群、 solr集群、 redis集群
  • solr集群-tools.zip

    2021-04-13 13:17:42
    solr集群-tools
  • 1.本次搭建的solr集群为四个实例,需要四个solr和四个tomcat先将tomcat copy4份solrcolud 中修改端口号:8080-80832.安装solr实例将单机版solr中的solr工程 复制到这四个tomcat/webapps中并启动启动和关闭tomcat比较...
  • 集群搭建(zookeeper集群+solr集群)整个步骤本人亲身实践过,如果自身电脑配置高,可以尝试模拟真实服务器进行搭建;
  • 1、solr集群搭建 2、使用solrj管理solr集群 3、把搜索功能切换到集群版 2. 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个...
  • Solr集群搭建

    2017-10-26 20:42:12
    Solr集群搭建:Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用...
  • solr集群安装维护.docx

    2019-12-13 16:04:42
    本文档用于solr集群的搭建,在liunx系统中搭建solr集群利用生成的索引文件提高查询速度此文档可以帮助你快速完成集群的搭建。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,596
精华内容 1,038
关键字:

solr集群