在java中使用solr7.2.0 新舊版本建立SolrClient對比

在Java中使用solr 版本7.2.0

solrj已經更新到了7.2.0,新版本solr獲取SolrClient的方式也和以前舊版本有所不一樣java

solr6.5開始不推薦直接使用HttpSolrClient的構造方法建立SolrClient(6.5以前版本的建立方式在頁末)apache

從7.0.0開始刪除了HttpSolrClient建立客戶端的構造方法,使用內部類Builder構建SolrClient數據結構

安裝solr:http://www.javashuo.com/article/p-rpmldpyx-cx.html工具

import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.junit.Test;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * Java中使用solr
 * @author jaffreyen
 * @date 2018/1/9
 */
public class SolrConnect {

    // solr url
    private final static String BASE_URL = "http://localhost:8081/solr";

    /**
     * 獲取SolrClient
     * solrj 6.5及之後版本獲取方式
     * @return
     */
    public static HttpSolrClient getSolrClient(){
        /*
         * 設置超時時間
         * .withConnectionTimeout(10000)
         * .withSocketTimeout(60000)
         */
        return new HttpSolrClient.Builder(BASE_URL)
                .withConnectionTimeout(10000)
                .withSocketTimeout(60000)
                .build();
    }

    @Test
    public void testQuery() throws IOException, SolrServerException {
        HttpSolrClient solrClient = getSolrClient();
        // 定義查詢條件
        Map<String, String> params = new HashMap<String, String>();
        params.put("q", "*:*");
        SolrParams mapSolrParams = new MapSolrParams(params);
        //執行查詢 第一個參數是collection,就是咱們在solr中建立的core
        QueryResponse response = solrClient.query("RoleVO", mapSolrParams);
        // 獲取結果集
        SolrDocumentList results = response.getResults();
        for (SolrDocument result : results) {
            // SolrDocument 數據結構爲Map
            System.out.println(result);
        }
    }

    @Test
    public void testAdd() throws IOException, SolrServerException {
        HttpSolrClient solrClient = getSolrClient();
        // 定義數據 solr輸入文檔 數據結構爲Map
        SolrInputDocument inputDocument = new SolrInputDocument();
        inputDocument.addField("id","123");
        inputDocument.addField("roleName", "角色名稱");
        // 執行添加 ps:若是id相同,則執行更新操做
        // 要指定操做的collection 就是solr-home下定義的core
        UpdateResponse add = solrClient.add("RoleVO", inputDocument);
        //提交添加/更新
        solrClient.commit("RoleVO");
    }

    @Test
    public void testDelete() throws IOException, SolrServerException {
        HttpSolrClient solrClient = getSolrClient();
        // 經過id刪除 執行要刪除的collection(core)
        solrClient.deleteById("RoleVO", "123");
        // 還能夠經過查詢條件刪除
        // solrClient.deleteByQuery("RoleVO", "查詢條件");
        // 提交刪除
        solrClient.commit("RoleVO");
    }
}

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

直接使用HttpSolrClient的構造方法初始化ui

/**
     * 獲取SolrClient
     * solrj 6.5之前的獲取方式
     * @return
     */
    public static HttpSolrClient getSolrClient(){
        return new HttpSolrClient(BASE_URL);
    }

這只是最基本的使用,接下來我會封裝一個solr查詢工具類,能夠很是方便的使用solrurl

solr的查詢語法隨後也會發出來spa

相關文章
相關標籤/搜索