環境: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,出現下面的頁面,證實這張表的數據已經導入進來了。
六、查找數據