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

Posted 116970u

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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

以上是关于在java中使用solr7.2.0 新旧版本创建SolrClient对比的主要内容,如果未能解决你的问题,请参考以下文章

refs之新旧差异

更新时获取文档的新旧版本

Gradle依赖管理:如何在android项目中维护新旧版本的依赖项?

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

如何解决IndexedDB在webkit内核下新旧版本的兼容问题

如何解决IndexedDB在webkit内核下新旧版本的兼容问题