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"); } }
直接使用HttpSolrClient的構造方法初始化ui
/** * 獲取SolrClient * solrj 6.5之前的獲取方式 * @return */ public static HttpSolrClient getSolrClient(){ return new HttpSolrClient(BASE_URL); }
這只是最基本的使用,接下來我會封裝一個solr查詢工具類,能夠很是方便的使用solrurl
solr的查詢語法隨後也會發出來spa