在java中使用solr7.2.0 新旧版本创建SolrClient对比

在Java中使用solr 版本7.2.0

solrj已经更新到了7.2.0,新版本solr获取SolrClient的方式也和之前旧版本有所不同

solr6.5开始不推荐直接使用HttpSolrClient的构造方法创建SolrClient(6.5之前版本的创建方式在页末)

从7.0.0开始删除了HttpSolrClient创建客户端的构造方法,使用内部类Builder构建SolrClient

安装solr:https://my.oschina.net/u/2931319/blog/1595303

 1
 2 import org.apache.solr.client.solrj.SolrServerException;
 3 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 4 import org.apache.solr.client.solrj.response.QueryResponse;
 5 import org.apache.solr.client.solrj.response.UpdateResponse;
 6 import org.apache.solr.common.SolrDocument;
 7 import org.apache.solr.common.SolrDocumentList;
 8 import org.apache.solr.common.SolrInputDocument;
 9 import org.apache.solr.common.params.MapSolrParams;
10 import org.apache.solr.common.params.SolrParams;
11 import org.junit.Test;
12
13 import java.io.IOException;
14 import java.util.HashMap;
15 import java.util.Map;
16
17 /**
18  * Java中使用solr
19  * @author jaffreyen
20  * @date 2018/1/9
21  */
22 public class SolrConnect {
23
24     // solr url
25     private final static String BASE_URL = "http://localhost:8081/solr";
26
27     /**
28      * 获取SolrClient
29      * solrj 6.5及以后版本获取方式
30      * @return
31      */
32     public static HttpSolrClient getSolrClient(){
33         /*
34          * 设置超时时间
35          * .withConnectionTimeout(10000)
36          * .withSocketTimeout(60000)
37          */
38         return new HttpSolrClient.Builder(BASE_URL)
39                 .withConnectionTimeout(10000)
40                 .withSocketTimeout(60000)
41                 .build();
42     }
43
44     @Test
45     public void testQuery() throws IOException, SolrServerException {
46         HttpSolrClient solrClient = getSolrClient();
47         // 定义查询条件
48         Map<String, String> params = new HashMap<String, String>();
49         params.put("q", "*:*");
50         SolrParams mapSolrParams = new MapSolrParams(params);
51         //执行查询 第一个参数是collection,就是我们在solr中创建的core
52         QueryResponse response = solrClient.query("RoleVO", mapSolrParams);
53         // 获取结果集
54         SolrDocumentList results = response.getResults();
55         for (SolrDocument result : results) {
56             // SolrDocument 数据结构为Map
57             System.out.println(result);
58         }
59     }
60
61     @Test
62     public void testAdd() throws IOException, SolrServerException {
63         HttpSolrClient solrClient = getSolrClient();
64         // 定义数据 solr输入文档 数据结构为Map
65         SolrInputDocument inputDocument = new SolrInputDocument();
66         inputDocument.addField("id","123");
67         inputDocument.addField("roleName", "角色名称");
68         // 执行添加 ps:如果id相同,则执行更新操作
69         // 要指定操作的collection 就是solr-home下定义的core
70         UpdateResponse add = solrClient.add("RoleVO", inputDocument);
71         //提交添加/更新
72         solrClient.commit("RoleVO");
73     }
74
75     @Test
76     public void testDelete() throws IOException, SolrServerException {
77         HttpSolrClient solrClient = getSolrClient();
78         // 通过id删除 执行要删除的collection(core)
79         solrClient.deleteById("RoleVO", "123");
80         // 还可以通过查询条件删除
81         // solrClient.deleteByQuery("RoleVO", "查询条件");
82         // 提交删除
83         solrClient.commit("RoleVO");
84     }
85 }

solrj6.5之前的初始化SolrClient方式

1 /**
2      * 获取SolrClient
3      * solrj 6.5以前的获取方式
4      * @return
5      */
6     public static HttpSolrClient getSolrClient(){
7         return new HttpSolrClient(BASE_URL);
8     }

参考:

https://blog.csdn.net/jaffreyen/article/details/79081809

https://blog.csdn.net/u010510107/article/details/81051795

原文地址:https://www.cnblogs.com/116970u/p/11327132.html

时间: 2024-10-11 08:05:44

在java中使用solr7.2.0 新旧版本创建SolrClient对比的相关文章

VS2015预览版中的C#6.0 新功能(二)

VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通过先声明field,然后property只提供getter方法来实现,无法通过自动属性来实现.在c#6.0中,可以通过如下的形式声明只读的自动属性: public string FirstName { get; } 对于只读的自动属性,其backing field是readonly的,其值可以在属性

[转帖]InfluxDB 1.2.0安装及新旧版本的注意事项

InfluxDB 1.2.0安装及新旧版本的注意事项 http://haibing.org/245?zwlqby=npztq3 挺好的文章 很好的解决了 上一个文档里面 关于 web admin 的问题 更多好文章见作者电子书集<Linux运维入门指南:生产运维需要掌握的技能> 随着大数据的爆发,系统数量也是直线上升,监控系统,收集系统运行状态成了保障业务正常运行中的重要一个环节. 针对这种产生频率快.带时间标签.测点多.信息量大的数据,时序数据库(Time Series Database,简

linux V4L2驱动中新旧版本下video buffer alloc与mmap的处理区别

首先需要说明目前在比较新的内核中已经采用了 vb2_queue与vb2_buffer来替代旧版本内核中经常使用到的 videobuf_queue与videobuf_buffer. 两者主要用于对用户层申请VIDIOC_REQBUF时的使用. 从用户层Request的Memory的类型区分,典型的两种是: V4L2_MEMORY_USERPTR以及V4L2_MEMORY_MMAP,前者的内存主动权位于用户层,即驱动中的视频输出内存地址由用户层来提供,后者MMAP操作的内存缓存类型一般需要由驱动自己

各新旧版本Java及其相关文档可以从这里下载

http://www.oracle.com/technetwork/java/archive-139210.html 各新旧版本Java及其相关文档可以从这里下载

MySQL新旧版本ORDER BY 处理方法

MySQL 的order by 涉及到三个参数:A. sort_buffer_size 排序缓存.B. read_rnd_buffer_size 第二次排序缓存.C. max_length_for_sort_data 带普通列的最大排序约束. 我来简单说下MySQL的排序规则.假设查询语句select * from tb1 where 1 order by  a ; 字段a没有建立索引:以上三个参数都足够大.MySQL内部有两种排序规则:第一种,是普通的排序.这种排序的特点是节省内存,但是最终会

浅谈 angular新旧版本问题

一直在学习angularJs,之前用的版本比较老,前些天更新了一下angularJs的版本,然后发现了一些问题,希望和大家分享一下. 在老的版本里控制器直接用函数定义就可以 比如: 在angularJs1.3.0中controller 直接写成函数就可以  但是在新版本里写控制器需要这样: 新版本里 我用的 1.3.9版本,必须定义angular.module,直接写成函数的形式angularJs不识别了. 然后今天我用angular-1.3.9写了一个route,一直在报错.我就想是不是版本的

移动端测试:优化原有功能,改动接口需要兼容新旧版本

在测试线下培训V1.0.1(月亮天使V4.8.0)时,因为在这个版本中改动了课程状态变更的逻辑,由原来的由教师点击上下课来更新课程状态,到根据排课时间,使用定时器来更新课程状态,在逻辑上有了很大的变化. 而且界面上,我的授课由原来的三个页签减少为两个,以及对应的角标数量统计等等多种情况.最初没有考虑到兼容旧版本的功能,导致修改后的接口对应不上,导致旧版的部分功能调用修改后的接口,返回参数异常等错误. 本次更新也不是强制更新的,所以后面修改接口或新增接口,兼容旧版本,以保证旧版本的正常运作,但是我

第二章-第二题(每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。)--by侯伟婷

第二题:每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令.比较项目的新旧版本的差别. 下面我将自己的练习结果和个人感受记录如下: 第一步:安装Git,设置自己的账号和邮箱,参见Git教程-廖雪峰的官方网站,网址如下参考资料1所示. 第二步:在Git中新建repository,名叫HelloWorld,并进行初始化,如图所示. 第三步:在HelloWorld版本库中新建了helloWorld.txt文件,用以练习G

Android技巧小结之新旧版本Notification

最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API level  > 11),Notification类中的一些方法被Android声明deprecated(弃用),其实基本上相当于全部弃用了,因为这个类本身方法就少得可怜. Android官方声明弃用,一定有它的理由,虽然我也不知道是什么.奈何本人轻度强迫症患者,人家都建议你不要用了,那就不要老是恪守着N年