1. 程式人生 > >基於Centos7安裝Solr7.4,並匯入資料教程

基於Centos7安裝Solr7.4,並匯入資料教程

環境:centos7、JDK1.8、solr 自帶Jetty啟動

一、安裝JDK1.8環境

1、下載JDK

jdk-8u172-linux-x64.rpm

下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2、安裝JDK

rpm -ivh jdk-8u131-linux-x64.rpm

3、配置JDK環境變數

vim /etc/profile 

在最後面加上下面這段

JAVA_HOME=/usr/java/jdk1.8.0_172-amd64

CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib

PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

export PATH CLASSPATH JAVA_HOME

4、檢查是否完成安裝

java -version

javac

二、安裝Solr

1、下載solr

solr-7.4.0.tgz

下載地址:http://mirrors.hust.edu.cn/apache/lucene/solr/7.4.0/solr-7.4.0.tgz

2、建立目錄

[[email protected] /]# mkdir /chowdate

solr-7.4.0.tgz複製到目錄 

/chowdate,接著解壓。

[[email protected] /]#  tar -zxvf  solr-7.4.0.tgz

3、啟動Solr

localhost bin]# /chowdate/solr-7.4.0/bin/solr start -forc

4、開啟頁面

http://localhost:8983/solr/#/

 

5、啟動到開啟頁面過程可能會出現的問題

如果執行./solr start -force 命令的時候會警告你係統檔案開啟數的問題,可以這樣解決。修改完後要重啟系統。

1. 修改 /etc/sysctl.conf 檔案,在最後一行新增

fs.file-max = 6553560

2. 修改 /etc/security/limits.conf 檔案,在最後一行新增

* soft nproc 65535                 //注意,前面的星號也需要
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

如果出現solr安裝成功,但是外界訪問不到的問題,請檢查防火牆是否關閉,或者8983埠是否允許開放!

關閉防火牆的命令:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall開機啟動

firewall-cmd --state #檢視預設防火牆狀態(關閉後顯示notrunning,開啟後顯示running)

開啟埠的命令:

firewall-cmd --zone=public --add-port=8983/tcp --permanent    (--permanent永久生效,沒有此引數重啟後失效)

三、新增自己的solr core

1、建立core目錄

在/chowdate/solr-7.4.0/server/solr目錄下建立new_core目錄(名字自己定)

2、複製配置檔案

複製/chowdate/solr-7.4.0/server/solr/configsets/_default下的conf資料夾到/chowdate/solr-7.4.0/server/solr/new_core/下。

3、新增core

在頁面新增new_core(必須先做上面1、2步,不然會提示報錯)。

新增成功後/chowdate/solr-7.4.0/server/solr/new_core/下會多兩個東西。

core.properties檔案、data目錄

四、匯入資料庫中的資料到Solr中

1、建立data-config.xml檔案

在/chowdate/solr-7.4.0/server/solr/new_core/conf目錄下建立一個檔案data-config.xml,與solrconfig.xml同級

2、修改solrconfig.xml檔案

修改/chowdate/solr-7.4.0/server/solr/new_core/conf/solrconfig.xml檔案

在<requestHandler name="/select" class="solr.SearchHandler">上放增加以下這段程式碼。

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
       <lst name="defaults">
          <str name="config">data-config.xml</str>
       </lst>
</requestHandler>

其中<str name="config"></str>裡的內容就是我們在上一步建立的data-config.xml檔案,將它們關聯起來。

3、修改data-config.xml檔案

接下來我們開啟data-config.xml檔案,配置相關的資料庫屬性,即我們要匯入那張表的哪些欄位,內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource name="source1" type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://10.10.9.103:3306/auth-cas"
              user="root"
              password="****"
              batchSize="-1" />
    <document>
        <entity name="user" dataSource="source1"
            query="SELECT uid,user_code,account,password,user_name,gender,last_login_time,update_time FROM uap_tb_gmvcs_user">

            <field column='uid' name='uid' />
            <field column='user_code' name='user_code' />
            <field column='account' name='account' />
            <field column='password' name='password' />
            <field column='user_name' name='user_name' />
            <field column='gender' name='gender' />
            <field column='last_login_time' name='last_login_time' />
            <field column='update_time' name='update_time' />
        </entity>
    </document>
</dataConfig>

dataSource 中,url是你要訪問的資料庫路徑,我這裡指定到我的auth-cas 資料庫。user是使用者名稱,password是你的資料庫密碼。

query是一個sql語句,你需要匯入哪張表的哪些欄位,查就行了。然後<field>標籤中的column屬性是你SQL語句中查詢的欄位,跟資料庫中對應;name屬性是你給它起的一個別名,應該是必須指定的(本人沒試過不指定的結果),至於name屬性是幹嘛的,繼續往下操作,自然會明白。有多個查詢欄位就需要有多個<field>標籤,每一個<field>標籤對應一個欄位。

document配置資料庫查詢語句與managed_schema域的對應關係。目的是,在core匯入資料的時候,會先通過該配置資訊連結到資料庫通過查詢語句把資料查詢出來,通過資料庫欄位與managed_schema域關聯關係建立索引

4、修改managed-schema檔案

修改/chowdate/solr-7.4.0/server/solr/new_core/conf/managed-schema檔案,將剛才在data-config.xml中配置的<field>標籤新增進來。

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <!-- docValues are enabled by default for long type so we don't need to index the version field  -->
    <field name="_version_" type="plong" indexed="false" stored="false"/>
    <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
    <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
    <!-- 上面是原有的的欄位 -->     

    <!-- 自己的匯入的欄位 -->
    <field name="uid" type="string" indexed="true" stored="true" />
    <field name="user_code" type="string" indexed="true" stored="true" />
    <field name="account" type="string" indexed="true" stored="true" />
    <field name="password" type="string" indexed="true" stored="true" />
    <field name="user_name" type="string" indexed="true" stored="true" />
    <field name="gender" type="string" indexed="true" stored="true" />
    <field name="last_login_time" type="pdate" indexed="true" stored="true" />
    <field name="update_time" type="pdate" indexed="true" stored="true" />

這裡<field>裡的name屬性值,就是我們剛才在data-config.xml中<field>標籤的name屬性值,這是name屬性的第一個用途,關聯起來。

name:是這個域的名稱,在整個managed_schema檔案裡面需要唯一,不能重複,這裡定義成跟資料庫表字段的名稱,方便使用。當然,也可以定義成其他名字。

type:是表示這個欄位的型別是什麼,string是字串型別,int是整形資料型別,date是時間型別,相當於資料庫裡面的timestamp。

indexed:表示是否索引,索引的話就能查詢到,否則,搜尋的時候,不會出現。

stored:表示是否儲存到索引庫裡面。

required:是否必須

multiValued:是否多值,比如商品資訊中,一個商品有多張圖片,一個Field想儲存多個值的話,必須將multiValued設定為true

5、下載連線資料庫和匯入資料的jar包

現在涉及到資料庫了,肯定需要依賴一些jar包,下載三個jar包 下載地址:http://mvnrepository.com/

mysql-connector-java-8.0.11.jar

solr-dataimporthandler-7.4.0.jar

solr-dataimporthandler-extras-7.4.0.jar

三個jar包 放到/chowdate/solr-7.4.0/server/solr-webapp/webapp/WEB-INF/lib 目錄下

然後開啟/chowdate/solr-7.4.0/server/solr/new_core/conf/solrconfig.xml,引用上面提到的jar包,如下。

<!-- mysql匯入增加的包開始--> 
<lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-.*\.jar" /> 
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" /> 
<!-- mysql匯入增加的包結束-->

關閉然後重啟  ./bin/solr stop -all       ./bin/solr  start  -force   

6、匯入資料

再次訪問我們剛才的頁面,在左側找到我們部署好的new_core工程,點選Dataimport,再選擇full-import(全部匯入),點選Execute,出現下面的頁面,證明這張表的資料已經匯入進來了。

6、查詢資料