Solr集群

学习主题: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"));
        }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值