(二)java8-solr6.4.1-tomcat8.5建立core 和java Demo
阿新 • • 發佈:2019-01-23
建立專案:
<!--
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">${jetty.port:8983}</int>
<str name="hostContext">${hostContext:solr}</str>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
<str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common .cloud.DefaultZkCredentialsProvider}</str>
<str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout ">${socketTimeout:600000}</int>
<int name="connTimeout">${connTimeout:60000}</int>
</shardHandlerFactory>
-->
以上這程式碼塊註釋即可(預設沒有註釋)
3. 在sorl-home資料夾下建立【my_solr】資料夾。
4. 將【solr-6.4.1\example\example-DIH\solr\solr】下的conf資料夾拷貝到【my_solr】資料夾下。包含如下檔案
5. 修改core.properties中內容(這個name的值實際上就core的名稱,可以任意命名):
name=my_core
7.看到以上基本上建立專案已經成功了。
demo測試
- 以上配置是預設對schema的管理是使用managed-schema(在sole-home/my_core/conf/下),我在這不更改其他自定義配置
看圖(managed-schema配置資訊):在JAVA程式碼中我會使用預設的field(紅框標識的兩個),後面文章中會主要說明該配置. - 匯入maven依賴:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>6.4.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
3 . 編寫如下程式碼:
import java.io.IOException;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
/**
* API簡單操作
* @author weishuai
*
*/
public class SolrTest {
// solr 部署的url
private static final String url = "http://localhost:8081/solr";
// home
private static final String uri = "my_solr";
// 新增一條資料
public static void addDoc() throws SolrServerException, IOException {
// 得到請求
SolrClient sc = getSolrClient();
// 拼裝文字
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "id");
// 其他引數省略。。。
doc.addField("title", "我深深地愛著你,solr");
sc.add(doc);
sc.commit();
}
// 刪除一條資料
public static void deleteDocById() throws SolrServerException, IOException {
// 得到請求
SolrClient sc = getSolrClient();
sc.deleteById("0");//id為0的資料
sc.commit();
}
// 刪除全部資料
private static void deleteAllDoc() throws SolrServerException, IOException {
// 得到請求
SolrClient sc = getSolrClient();
sc.deleteByQuery("*:*");
sc.commit();
}
// 根據id修改一個數據(與新增類似:存在就修改,不存在就新增)
private static void updateDocById() throws SolrServerException, IOException {
// 得到請求
SolrClient sc = getSolrClient();
// 拼裝文字
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "id");
// 其他省略。。。
doc.addField("title", "我深深地愛著你,solr !");
sc.add(doc);
sc.commit();
}
// 根據Id查詢一條資料
private static void getDocById() throws SolrServerException, IOException {
// 得到請求
SolrClient sc = getSolrClient();
SolrDocument sd = sc.getById("id");
System.out.println(sd); // 列印為:SolrDocument{id=id,
// content_test=[我深深地愛著你,solr !],
// _version_=1560544234369449984}
System.out.println(sd.get("id"));
System.out.println(sd.get("title"));
System.out.println(sd.get("_version_"));
}
// 全部查詢
private static void getDocByAll() throws SolrServerException, IOException {
SolrClient sc = getSolrClient();
SolrQuery query = new SolrQuery();
//設定查詢條件(全部)
query.setQuery("*:*");
//查詢
SolrDocumentList solrDocumentList =sc.query(query).getResults();
//遍歷結果集
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println(solrDocument); //列印為:SolrDocument{id=id, content_test=[我深深地愛著你,solr !], _version_=1560544234369449984}
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("title"));
System.out.println(solrDocument.get("_version_"));
}
}
public static void main(String[] args) throws SolrServerException,
IOException {
// 新增一個索引
//addDoc();
// 根據Id刪一條資料
// deleteDocById();
// 刪除全部資料
// deleteAllDoc();
// 修改一條資料
// updateDocById();
// 根據Id查詢一條資料
// getDocById();
// 全部查詢
getDocByAll();
}
/**
* 該物件有兩個可以使用,都是執行緒安全的 1、CommonsHttpSolrServer:啟動web伺服器使用的,通過http請求的 2、
* EmbeddedSolrServer:內嵌式的,匯入solr的jar包就可以使用了 3、solr
* 4.0之後好像添加了不少東西,其中CommonsHttpSolrServer這個類改名為HttpSolrClient
*
* @return
*/
public static SolrClient getSolrClient() {
return new HttpSolrClient(url + "/" + uri);
}
}