windows下Solr安裝及從數據庫獲取數據

步驟

1.安裝配置solr
2.solrJ操作增刪改solr數據

本文實現了最基本的操作,並假設已經在windows系統上安裝好jdk,數據庫操作工具等。

安裝環境 windows7

1.安裝配置solr
1.1到官網下載solr並解壓到本地磁盤

官網下載地址
官網上最新的是8.1.1版本,本人下載的是7.7.2版本,親測可用。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

下載完成後,直接將文件解壓到本地目錄中。

1.2測試是否安裝成功

找到解壓後的solr文件夾,並找到solr-7.7.2/bin目錄,打開cmd並cd到該目錄。
在這裏插入圖片描述
輸入命令solr start啓動solr,如果啓動成功會顯示如圖結果:
在這裏插入圖片描述
其中8983是默認端口號。此時在瀏覽器輸入網址http://localhost:8983/solr/#/成功的話即可看到如下圖界面
在這裏插入圖片描述
如需關閉,可以使用solr stop -all命令關閉

1.3創建core

cmd在D:\solr-7.7.2\bin目錄下輸入solr create -c corename(core名稱,自定義)命令創建一個core,(注意,需要在solr start啓動solr後才能創建)
在這裏插入圖片描述
運行完成後在瀏覽器中訪問http://localhost:8983/solr/#/(刷新頁面)可以看到如下圖所示,新創建的core被添加進去
在這裏插入圖片描述
此時打開文件夾D:\solr-7.7.2\server\solr可以看到下面多了一個corename文件夾,就是我們剛纔創建的core。創建core可以直接在文件夾操作,百度上可以收到。這裏爲了方便使用命令創建。

1.4配置數據庫連接

添加驅動依賴包到如下目錄:D:\solr-7.7.2\server\solr-webapp\webapp\WEB-INF\lib,我使用的oracle數據庫,添加的是oracle驅動包,其他數據庫添加相應驅動包即可:
在這裏插入圖片描述
找到解壓目錄D:\solr-7.7.2\dist下的solr-dataimporthandler-7.7.2.jar包和solr-dataimporthandler-extras-7.7.2.jar兩個包,也複製到D:\solr-7.7.2\server\solr-webapp\webapp\WEB-INF\lib目錄下。

找到目錄D:\solr-7.7.2\server\solr\corename\conf下的solrconfig.xml並添加配置

<!-- 數據庫配置 -->
	<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
		<lst name="defaults">  
			  <str name="config">data-config.xml</str>  
		</lst>  
	</requestHandler> 

在目錄D:\solr-7.7.2\server\solr\corename\conf下新建一個文件data-config.xml並添加如下內容:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
	<dataSource 
	type="JdbcDataSource" 
	driver="oracle.jdbc.OracleDriver" 
	url="jdbc:oracle:thin:@localhost:1521:ORCL" 
	user="ggjt" 
	password="123456" /> 
	<document>
		<entity name="SYS_USER" query="select 
        ID_,
        USERNAME_,
        PASSWORD_,
        TYPE_,
        REG_TYPE_,
        STATUS_,
        OFFICE_ID_,
        RESERVED_A_,
        RESERVED_B_,
        RESERVED_C_
		from SYS_USER">
			<field column="ID_" name="user_id"/> 
			<field column="USERNAME_" name="user_userName"/> 
			<field column="PASSWORD_" name="user_password"/> 
			<field column="TYPE_" name="user_type"/> 
			<field column="REG_TYPE_" name="user_regType"/> 
			<field column="STATUS_" name="user_status"/> 
			<field column="OFFICE_ID_" name="user_officeId"/> 
			<field column="RESERVED_A_" name="user_reservedA"/> 
			<field column="RESERVED_B_" name="user_reservedB"/> 
			<field column="RESERVED_C_" name="user_reservedC"/> 
		</entity>
	</document>
</dataConfig>

其中數據庫驅動,地址,表,用戶名,密碼和查詢sql及字段都需要替換成你自己數據庫的相應配置。field的culumn是數據庫字段名稱(查詢出來後沒有改別名下),name可以自定義,之後就是solr字段名稱。
打開文件D:\solr-7.7.2\server\solr\corename\conf下的managed-schema,並在其中的標籤裏面添加如下配置

<field name="user_id" type="string" indexed="true" stored="true"/>
	<field name="user_userName" type="string" indexed="true" stored="true"/>
	<field name="user_password" type="string" indexed="true" stored="true"/>
	<field name="user_type" type="string" indexed="true" stored="true"/>
	<field name="user_regType" type="string" indexed="true" stored="true"/>
	<field name="user_status" type="string" indexed="true" stored="true"/>
	<field name="user_officeId" type="string" indexed="true" stored="true"/>
	<field name="user_reservedA" type="string" indexed="true" stored="true"/>
	<field name="user_reservedB" type="string" indexed="true" stored="true"/>
	<field name="user_reservedC" type="string" indexed="true" stored="true"/>

注意上面的name需要和前面配置的字段一樣。

1.5驗證是否成功

關掉之前打開的solr,重新啓動,cmd到D:\solr-7.7.2\bin目錄下輸入命令solr start,待啓動成功後,瀏覽器打開solr地址http://localhost:8983/solr/#/,並按如下圖選擇好,其中的Entity是你的表名。點擊excute執行。
在這裏插入圖片描述
執行完畢後刷新頁面,按如下圖查詢,可以看到右邊有數據顯示及可。
在這裏插入圖片描述

2.solrJ操作增刪改solr數據
2.1導入solr依賴包

在項目的pom.xml文件中添加如下依賴包

<!-- solr依賴 -->
<dependency>
	<groupId>org.apache.solr</groupId>
	<artifactId>solr-solrj</artifactId>
</dependency>

注意:導入依賴包可能會報錯,只需要在maven update的時候勾選強制執行即可。如圖:
在這裏插入圖片描述

2.2編寫java測試代碼
package cn.idatatech.websrv.modules.solr.sysUser.service;

import java.io.IOException;

import org.apache.commons.lang3.StringUtils;
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.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;

public class SolrSysUserService {

	private final static String SOLR_URL = "http://localhost:8983/solr/test_core1";
	
	public static void main( String[] args ){
		
		SolrSysUserService userService = new SolrSysUserService();
		
//		userService.add();
//		userService.query();
		userService.delete("123456");
	}
	
	/**
	 * 添加數據
	 * @author  zoul  [lang.zou]
	 * @date  2019-06-06 18:13
	 */
	public void add(){
		HttpSolrClient solrServer = new HttpSolrClient.Builder(SOLR_URL)
	            .withConnectionTimeout(10000)
	            .withSocketTimeout(60000)
	            .build();
		
		SolrInputDocument document = new SolrInputDocument();
		
		// ID爲solr主鍵,域不能缺
		document.addField("id", "123456");
        document.addField("user_id", "用戶ID");
        document.addField("user_officeId", "部門ID");
        document.addField("user_password", "密碼");
        document.addField("user_regType", "");
        document.addField("user_reservedA", "保留字段A");
        document.addField("user_reservedB", "保留字段B");
        document.addField("user_reservedC", "保留字段C");
        document.addField("user_status", "狀態");
        document.addField("user_type", "類型");
        document.addField("user_userName", "名稱");
        document.addField("user_newA", "新添加字段A");
        
        try {
			solrServer.add(document);
			solrServer.commit();
		} catch (SolrServerException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	
	/**
	 * 刪除
	 * @author  zoul  [lang.zou]
	 * @date  2019-06-06 18:19
	 */
	public void delete(String id){
		
		if( StringUtils.isNotBlank(id) ){
			HttpSolrClient solrServer = new HttpSolrClient.Builder(SOLR_URL)
		            .withConnectionTimeout(10000)
		            .withSocketTimeout(60000)
		            .build();
	        try {
				solrServer.deleteById(id);
				solrServer.commit();
			} catch (SolrServerException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 查詢
	 * @author  zoul  [lang.zou]
	 * @date  2019-06-06 18:09
	 */
	public void query(){
		HttpSolrClient solrServer = new HttpSolrClient.Builder(SOLR_URL)
	            .withConnectionTimeout(10000)
	            .withSocketTimeout(60000)
	            .build();
		
		SolrQuery query = new SolrQuery();
		
		query.set("q", "user_id:ba33149ba38349e79dc63d0c855c3faf");
		
		QueryResponse response = null;
		
		try {
			response = solrServer.query(query);
		} catch (SolrServerException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		SolrDocumentList results = null;
		
		if( null != response ){
			results = response.getResults();
		}

		long resultCount = 0;
		
		if( null != results ){
			resultCount = results.getNumFound();
		}	
		System.out.println("查詢數量="+resultCount);
		
		for (SolrDocument solrDocument : results) {
			System.out.println(solrDocument.get("user_id"));
		}
	}
	
	
}

分別運行添加,查詢,刪除方法,打開地址http://localhost:8983/solr/#/可以同步看到數據更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章