Solr7 安裝部署 管理界面介紹
Solr7 安裝部署 管理界面介紹
本章重點介紹CentOS 安裝部署Solr7 ,Solr的管理界面介紹,添加核心Core配置,Dataimport導入數據,Documents 在線維護索引,Query復雜查詢和一些常見問題處理辦法。
什麽是Solr
Solr 是Apache下的一個頂級開源項目,采用Java開發,基於Lucene的全文搜索服務器。Solr可以獨立運行在Jetty、Tomcat等這些Servlet容器中。
這裏談到了Lucene,它是一個開放源代碼的全文檢索引擎工具包。提供了完整的查詢引擎和索引引擎,目的是為開發人員提供工具包,以方便的在系統中實現全文檢索的功能。
而Solr 的目標是打造一款企業級的搜索引擎系統,可以獨立運行。並且Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展,並對索引、搜索性能進行了優化。
Solr7 安裝部署
首先安裝環境的jdk是 jdk1.8 或者更高,建議tomcat是tomcat8.0或者更高
You will need the Java Runtime Environment (JRE) version 1.8 or higher
[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#/
看到管理頁面說明安裝成功
存在的問題
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目錄中,重啟Solr
管理界面介紹
添加核心Core
在管理頁面,點擊Core Admin,選擇AddCore,添加核心
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_core
config=solrconfig.xml
schema=schema.xml
dataDir=data
第二次創建core,就不用這麽麻煩了,直接把第一次創建的new_core目錄復制一份,修改core.properties文件中的name 即可。
在Core Selector 中選擇剛創建的 new_core,會出現很多菜單。這是本章的另一個重點。重點學習的內容:Query(查詢頁面),Documents (索引文檔),Dataimport(導入數據),Analysis(分析,下章節和中文分詞一起介紹)。其他了解即可。
Dataimport(導入數據)
點擊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:刷新後才能看到數據發生了變化(點一次刷新一次)
Documents (索引文檔)
索引的增加,修改,刪除相關操作。其中修改的邏輯是先刪除後增加。
比較重要的是前三個參數
Request-Handler(qt):update(新增,更新和刪除都用update)
Document Type:提交的索引文檔類型,有JSON、XML等格式
Document(s):提交的索引文檔內容
Commit Within:每1000毫秒執行
Overwrite:true,若文檔存在則默認覆蓋
刪除索引:刪除用json格式會出錯,用xml格式後面需添加< commit/>
工作中,我們不可能為了個別數據去寫代碼修改數據,那麽熟練使用Documents,對我們的工作有很大的幫助。
Query(查詢頁面)
查詢所有價格在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 的安裝部署,管理界面介紹就結束了。感謝閱讀!歡迎點評!!
Solr7 安裝部署 管理界面介紹