zoukankan      html  css  js  c++  java
  • 在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

  • 相关阅读:
    xml在html中的使用
    getElementsByTagName的用法
    opener 的使用
    动态增加属性
    innerText, innerHTML,outerHTML
    button的css属性
    动态改变select中option的次序
    input 的样式
    zkw线段树
    接着吐槽(2012/5/23)
  • 原文地址:https://www.cnblogs.com/116970u/p/11327132.html
Copyright © 2011-2022 走看看