在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