前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用SolrJ客户端管理SolrCloud(Solr集群)

使用SolrJ客户端管理SolrCloud(Solr集群)

作者头像
别先生
发布2019-09-29 11:14:18
1.2K0
发布2019-09-29 11:14:18
举报
文章被收录于专栏:别先生别先生

1、使用SolrJ客户端管理SolrCloud(Solr集群)。

代码语言:javascript
复制
  1 package com.taotao.search.service;
  2 
  3 import java.io.IOException;
  4 import java.util.ArrayList;
  5 
  6 import org.apache.solr.client.solrj.SolrQuery;
  7 import org.apache.solr.client.solrj.SolrServerException;
  8 import org.apache.solr.client.solrj.impl.CloudSolrServer;
  9 import org.apache.solr.client.solrj.response.QueryResponse;
 10 import org.apache.solr.client.solrj.response.UpdateResponse;
 11 import org.apache.solr.common.SolrDocument;
 12 import org.apache.solr.common.SolrDocumentList;
 13 import org.apache.solr.common.SolrInputDocument;
 14 import org.junit.Before;
 15 import org.junit.Test;
 16 
 17 /**
 18  * 使用SolrJ客户端管理SolrCloud(Solr集群)
 19  * 
 20  * @ClassName: SolrJToSolrCloud.java
 21  * @author: biehl
 22  * @since: 2019年9月15日 上午9:33:42
 23  * @Copyright: ©2019 biehl 版权所有
 24  * @version: 0.0.1
 25  * @Description:
 26  */
 27 public class SolrJToSolrCloud {
 28 
 29     // zookeeper地址
 30     private static String zkHostString = "192.168.110.142:2181,192.168.110.142:2182,192.168.110.142:2183";
 31     // collection默认名称,比如我的solr服务器上的collection是collection2_shard1_replica1,就是去掉“_shard1_replica1”的名称
 32     private static String defaultCollection = "collection2";
 33 
 34     // cloudSolrServer实际
 35     private CloudSolrServer cloudSolrServer;
 36 
 37     // 测试方法之前构造 CloudSolrServer
 38     @Before
 39     public void init() {
 40         cloudSolrServer = new CloudSolrServer(zkHostString);
 41         cloudSolrServer.setDefaultCollection(defaultCollection);
 42         cloudSolrServer.connect();
 43     }
 44 
 45     /**
 46      * 向solr集群中添加索引
 47      */
 48     @Test
 49     public void solrCloudAddDocument() {
 50         try {
 51             // 1、创建一个CloudSolrServer对象,构造方法中需要指定zookeeper的地址列表
 52             // String zkHost =
 53             // "192.168.110.142:2181,192.168.110.142:2182,192.168.110.142:2183";
 54             // zookeeper是solr集群的入口,这里只需要连接zookeeper即可。
 55             // CloudSolrServer cloudSolrServer = new CloudSolrServer(zkHost);
 56             // 2、需要设置默认的Collection
 57             // String collection = "collection2";
 58             // 设置默认的collection
 59             // cloudSolrServer.setDefaultCollection(collection);
 60             // 3、创建一个文档对象
 61             SolrInputDocument solrInputDocument = new SolrInputDocument();
 62             // 4、向文档中添加域
 63             // 向文档中添加的域,必须在schema.xml配置文件中定义。
 64             solrInputDocument.addField("id", "1008612");
 65             // 集群中使用的配置文件是zookeeper统一管理的配置文件。
 66             // 如果修改了schema.xml配置文件,使用zkCli.sh脚本命令重新上传conf目录即可,将配置文件进行覆盖。
 67             solrInputDocument.addField("title", "the title phone is xiaomi 9 s.");
 68             solrInputDocument.addField("author", "biehl");
 69             // 5、把文档写入索引库
 70             cloudSolrServer.add(solrInputDocument);
 71             // 6、提交
 72             cloudSolrServer.commit();
 73         } catch (SolrServerException e) {
 74             e.printStackTrace();
 75         } catch (IOException e) {
 76             e.printStackTrace();
 77         }
 78     }
 79 
 80     // 向solrCloud上创建索引
 81     @Test
 82     public void createIndexToSolrCloud() throws SolrServerException, IOException {
 83         SolrInputDocument document = new SolrInputDocument();
 84         document.addField("id", "100001");
 85         document.addField("title", "李四");
 86         cloudSolrServer.add(document);
 87         cloudSolrServer.commit();
 88 
 89     }
 90 
 91     // 搜索索引
 92     @Test
 93     public void searchIndexFromSolrCloud() throws Exception {
 94         // 创建一个solrQuery对象
 95         SolrQuery query = new SolrQuery();
 96         // 搜索出全部的内容
 97         query.setQuery("*:*");
 98         try {
 99             // 返回查询结果,响应结果和查询结果
100             QueryResponse response = cloudSolrServer.query(query);
101             SolrDocumentList docs = response.getResults();
102 
103             System.out.println("文档个数:" + docs.getNumFound());
104             System.out.println("查询时间:" + response.getQTime());
105 
106             // 遍历查询结果
107             for (SolrDocument doc : docs) {
108                 @SuppressWarnings("unchecked")
109                 ArrayList<String> title = (ArrayList<String>) doc.getFieldValue("title");
110                 String id = (String) doc.getFieldValue("id");
111                 System.out.println("id: " + id);
112                 System.out.println("title: " + title);
113                 System.out.println();
114             }
115         } catch (SolrServerException e) {
116             e.printStackTrace();
117         } catch (Exception e) {
118             System.out.println("Unknowned Exception!!!!");
119             e.printStackTrace();
120         }
121     }
122 
123     // 删除索引
124     @Test
125     public void deleteIndexFromSolrCloud() throws SolrServerException, IOException {
126         // 根据id删除
127         UpdateResponse response = cloudSolrServer.deleteById("000001");
128         // 根据多个id删除
129         // cloudSolrServer.deleteById(ids);
130         // 自动查询条件删除
131         // cloudSolrServer.deleteByQuery("title:the title phone is xiaomi 9 x.");
132         // 提交
133         cloudSolrServer.commit();
134     }
135 
136 }

注意:集群中使用的配置文件是zookeeper统一管理的配置文件。如果修改了schema.xml配置文件,使用zkCli.sh脚本命令重新上传conf目录即可,将配置文件进行覆盖。

向solr集群中添加索引和删除索引效果如下所示:

待续.....

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档