基於Centos7安裝Solr7.4,並導入數據教程

環境:centos七、JDK1.八、solr7.4.0 自帶Jetty啓動html

1、安裝JDK1.8環境
一、下載JDKjava

jdk-8u172-linux-x64.rpmmysql

下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
二、安裝JDKlinux

rpm -ivh jdk-8u131-linux-x64.rpm
三、配置JDK環境變量web

vim /etc/profilesql

在最後面加上下面這段數據庫

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

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

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

export PATH CLASSPATH JAVA_HOME
四、檢查是否完成安裝

java -version

javac

2、安裝Solr

一、下載solr

solr-7.4.0.tgz

下載地址:http://archive.apache.org/dist/lucene/solr/

二、建立目錄

[root@localhost /]# mkdir /chowdate

把solr-7.4.0.tgz複製到目錄 /chowdate,接着解壓。

[root@localhost /]#  tar -zxvf  solr-7.4.0.tgz

三、啓動Solr

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

四、打開頁面

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

 

五、啓動到打開頁面過程可能會出現的問題

若是執行./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永久生效,沒有此參數重啓後失效)

3、添加本身的solr core

一、建立core目錄

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

二、複製配置文件

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

三、添加core

在頁面添加new_core(必須先作上面一、2步,否則會提示報錯)。

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

core.properties文件、data目錄

4、導入數據庫中的數據到Solr中

一、建立data-config.xml文件

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

二、修改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文件,將它們關聯起來。

三、修改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域關聯關係建立索引

四、修改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

五、下載鏈接數據庫和導入數據的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   

六、導入數據

再次訪問咱們剛纔的頁面,在左側找到咱們部署好的new_core工程,點擊Dataimport,再選擇full-import(所有導入),點擊Execute,出現下面的頁面,證實這張表的數據已經導入進來了。

六、查找數據

相關文章
相關標籤/搜索