本章重點介紹CentOS 安裝部署Solr7 ,Solr的管理界面介紹,添加核心Core配置,Dataimport導入數據,Documents 在線維護索引,Query複雜查詢和一些常見問題處理辦法。文章底部會提供筆者安裝的Solr7 window版本和centos版本,僅供參考學習使用。html
Solr 是Apache下的一個頂級開源項目,採用Java開發,基於Lucene的全文搜索服務器。Solr能夠獨立運行在Jetty、Tomcat等這些Servlet容器中。java
這裏談到了Lucene,它是一個開放源代碼的全文檢索引擎工具包。提供了完整的查詢引擎和索引引擎,目的是爲開發人員提供工具包,以方便的在系統中實現全文檢索的功能。
而Solr 的目標是打造一款企業級的搜索引擎系統,能夠獨立運行。而且Solr提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展,並對索引、搜索性能進行了優化。mysql
首先安裝環境的jdk是 jdk1.8 或者更高,建議tomcat是tomcat8.0或者更高git
You will need the Java Runtime Environment (JRE) version 1.8 or highergithub
[itdragon@localhost solr-server]$wget http://mirror.bit.edu.cn/apache/lucene/solr/7.1.0/solr-7.1.0.zip[itdragon@localhost solr-server]$unzip solr-7.1.0.zip [itdragon@localhost solr-server]$ls apache-tomcat-8.5-solr solr-7.1.0[itdragon@localhost solr-server]$mkdir -p apache-tomcat-8.5-solr/webapps/solr [itdragon@localhost solr-server]$cd apache-tomcat-8.5-solr/webapps/solr/ [itdragon@localhost solr]$cp -r /home/itdragon/solr-server/solr-7.1.0/server/solr-webapp/webapp/* ./ [itdragon@localhost solr]$cp -r /home/itdragon/solr-server/solr-7.1.0/server/lib/ext/* ./WEB-INF/lib/ [itdragon@localhost solr]$cp -r /home/itdragon/solr-server/solr-7.1.0/server/lib/metrics*.* ./WEB-INF/lib/[itdragon@localhost solr]$cp -r /home/itdragon/solr-server/solr-7.1.0/dist/solr-dataimporthandler-* ./WEB-INF/lib/ [itdragon@localhost solr]$cd ../../[itdragon@localhost apache-tomcat-8.5-solr]$mkdir solrhome [itdragon@localhost apache-tomcat-8.5-solr]$cp -r /home/itdragon/solr-server/solr-7.1.0/server/solr/* ./solrhome/ [itdragon@localhost apache-tomcat-8.5-solr]$vim webapps/solr/WEB-INF/web.xml <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>solrhome地址,pwd查看</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> <!-- <security-constraint> ......省略 </security-constraint> --> [itdragon@localhost apache-tomcat-8.5-solr]$cd bin/ [itdragon@localhost apache-tomcat-8.5-solr]$./startup.sh
第一步:系統環境準備:jdk版本在1.8,tomcat8.5
第二步:下載solr7,並解壓在當前目錄
第三步:在tomcat,webapps目錄下建立solr目錄,並將solr-7.1.0/server/solr-webapp/webapp/* 目錄下的全部內容拷貝過去
第四步:將須要的jar導入到 WEB-INF/lib/ 下
第五步:在tomcat目錄下建立solrhome(目錄名自定義),並將solr-7.1.0/server/solr/* 目錄下的全部內容拷貝過去
第六步:修改WEB-INF/web.xml 文件,指定solrhome的位置,並註釋security-constraint 權限內容
第七步:啓動tomcat,並訪問http://ip:port/solr/index.html#/
注意:訪問http://ip:port/solr/ 顯示404,目前尚未找到緣由,網上說jar沒到導入,但是筆者都導入了。web
看到管理頁面說明安裝成功
sql
存在的問題
1 80端口占用
修改 tomcat/conf/server.xml 文件,更換端口號。
2 Logging頁面,日誌不能正常顯示數據庫
[itdragon@localhost solr]$mkdir -p WEB-INF/classes [itdragon@localhost solr]$cp /home/itdragon/solr-server/solr-7.1.0/server/resources/log4j.properties ./WEB-INF/classes/
第一步:在tomcat WEB-INF目錄下建立classes目錄
第二步:將solr-7.1.0/server/resources/目錄下的log4j.properties文件拷貝到classes目錄中,重啓Solrapache
在管理頁面,點擊Core Admin,選擇AddCore,添加核心
json
name:自定義的名字,建議和instanceDir保持一致
instanceDir: solrhome目錄下的實例類目
dataDir:默認填data便可
config:指定配置文件,new_core/conf/solrconfig.xml
schema:指定schema.xml文件,new_core/conf/schema文件(其實是managed-schema文件)
注意!在scheme下面有一個感嘆號!
instanceDir and dataDir need to exist before you can create the core
若是你無論他,直接點擊Add Core 會提示 solrconfig.xml 文件找不到
Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/home/itdragon/solr/apache-tomcat-8.5/solrhome/new_core'
解決方法以下
[itdragon@localhost new_core]$mkdir conf [itdragon@localhost new_core]$cp -r /home/itdragon/solr-server/solr-7.1.0/server/solr/configsets/_default/conf/* ./conf/[itdragon@localhost solrhome]$cp -r /home/itdragon/solr-server/solr-7.1.0/contrib/ ./ [itdragon@localhost solrhome]$cp -r /home/itdragon/solr-server/solr-7.1.0/dist/ ./ 檢查solrconfig.xml和contrib目錄,dist目錄的相對位置 <!-- <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" /> ......省略 --> <lib dir="${solr.install.dir:../../}/contrib/extraction/lib" regex=".*\.jar" /> ......省略
第一步:將solr-7.1.0/server/solr/configsets/_default/目錄下的conf 拷貝到 new_core 目錄下。正確的目錄結構:new_core/conf/solrconfig.xml
第二步:將contrib目錄,dist目錄拷貝到solrhome目錄中
第三步:檢查solrconfig.xml文件配置的路徑是否正確,重啓服務
重啓服務後便可正常建立Core,而後instanceDir文件夾(new_core)裏會自動生成一個core.properties文件
name=new_coreconfig=solrconfig.xmlschema=schema.xmldataDir=data
第二次建立core,就不用這麼麻煩了,直接把第一次建立的new_core目錄複製一份,修改core.properties文件中的name 便可。
在Core Selector 中選擇剛建立的 new_core,會出現不少菜單。這是本章的另外一個重點。重點學習的內容:Query(查詢頁面),Documents (索引文檔),Dataimport(導入數據),Analysis(分析,下章節和中文分詞一塊兒介紹)。其餘瞭解便可。
點擊Dataimport 顯示 Sorry, no dataimport-handler defined! 解決方法以下
[itdragon@localhost ~]$cd solr-server/apache-tomcat-8.5-solr/solrhome/contrib/dataimporthandler/lib # 導入solr-dataimporthandler 和 mysql-connector-java jar包 [itdragon@localhost solrhome]$vim new_core/conf/solrconfig.xml<lib dir="${solr.install.dir:../../}/contrib/dataimporthandler/lib" regex=".*\.jar" />......省略<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst></requestHandler>[itdragon@localhost solrhome]$vim new_core/conf/data-config.xml<?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/jpa" user="root" password="root"/> <document> <entity name="product" query="SELECT pid,name,catalog,catalog_name,price,description,picture FROM products "> <field column="pid" name="id"/> <field column="name" name="product_name"/> <field column="catalog" name="product_catalog"/> <field column="catalog_name" name="product_catalog_name"/> <field column="price" name="product_price"/> <field column="description" name="product_description"/> <field column="picture" name="product_picture"/> </entity> </document> </dataConfig>
第一步:進入solrhome/contrib/dataimporthandler/lib 目錄下,若沒有lib則建立一個,導入solr-dataimporthandler-7.1.0.jar 和 mysql-connector-java-5.1.17.jar 包
第二步:修改new_core/conf/solrconfig.xml 文件,使其加載dataimporthandler/lib下的jar包
第三步:在new_core/conf/solrconfig.xml 文件底部添加DataImportHandler 內容
第四步:在new_core/conf/ 目錄下建立data-config.xml(數據庫配置和對應的字段),重啓服務
jar包和sql文件:
https://github.com/ITDragonBlog/daydayup/tree/master/Solr/data-import-jar
若是出現下圖內容則說明配置成功。
Command:full_import:全量導入;delta_import:增量導入。
選擇 全量導入,Execute執行,Refresh Status刷新查看狀態,其餘都選默認便可。
Clean:在索引開始構建以前是否刪除以前的索引,默認爲true
Commit:在索引完成以後是否提交。默認爲true
Execute:執行導入
Refresh Status:刷新後才能看到數據發生了變化(點一次刷新一次)
索引的增長,修改,刪除相關操做。其中修改的邏輯是先刪除後增長。
比較重要的是前三個參數
Request-Handler(qt):update(新增,更新和刪除都用update)
Document Type:提交的索引文檔類型,有JSON、XML等格式
Document(s):提交的索引文檔內容
Commit Within:每1000毫秒執行
Overwrite:true,若文檔存在則默認覆蓋
刪除索引:刪除用json格式會出錯,用xml格式後面需添加< commit/>
工做中,咱們不可能爲了個別數據去寫代碼修改數據,那麼熟練使用Documents,對咱們的工做有很大的幫助。
查詢全部價格在10到20之間的數據,並以價格降序輸出商品類目名,商品標題,商品價格信息。
Request-Handler(qt):select查詢操做
q(query):查詢條件,key:value 形式,只能知足簡單的查詢
fq(filter query):過濾條件。對q的補充,實現複雜的查詢。如:product_price:[10.0 TO 20.0] 表示價格在10~20之間。" * " 表示無限,[ * TO 20.0] 表示小於20.0
sort:對查詢結果排序。如:product_price desc 表示價格降序
start,rows,開始頁數,和每頁多少條,簡稱頁碼
fl(field list):指定那些字段有返回值。多個值用","分隔。如:product_catalog_name,product_name,product_price
df(default field):默認域,當q查詢沒有key的時候,發揮做用
wt(write type):輸出格式,通常都是json
hl(high light):高亮,搜索的結果若不高亮,那就沒啥意義了。下一章會介紹
Dashboard:
顯示了該Solr實例開始啓動運行的時間、版本、系統資源(物理內存,交換空間)、jvm等信息
Logging:Solr運行日誌信息
Java Properties:
Solr在JVM 運行環境中的屬性信息,包括類路徑、文件編碼、jvm內存設置等信息。
Tread Dump:
顯示Solr Server中當前活躍線程信息,同時也能夠跟蹤線程運行棧信息。
Overview:
包含基本統計如當前文檔數;和實例信息如當前核心的配置目錄
Files:
在線預覽solrhome/new_core/conf/* 文件或者目錄
Ping:
請求來檢查覈心是否啓動並響應請求,點擊後顯示響應的毫秒數
Plugins / Stats:
插件及其狀態
Solr7是基於Lucene的全文檢索服務器,能夠獨立運行在servlet容器中
Solr7的安裝部署須要注意 tomcat/webapps/solr 和 solrhome 兩個目錄
建立Solr Core須要注意 solrconfig.xml文件在new_core/conf目錄中
Query查詢,q + fq 實現複雜的查詢,sort排序,fl指定回顯數據,hl高亮
Documents,支持新增,更新,刪除索引文檔
Dataimport,導入數據,須要注意配置 solrconfig.xml 文件和建立 data-config.xml 文件
solr7 window版本(有數據):連接: https://pan.baidu.com/s/1nuPSXQT 密碼: nf9p
solr7 centos版本(沒數據,需本身Dataimport):連接: https://pan.baidu.com/s/1yJgI2V2oLFNFycCrNCFKgw 密碼: 0y28
到這裏Solr7 的安裝部署,管理界面介紹就結束了。感謝閱讀!歡迎點評!!