企業搜索 Solr7 安裝部署

Solr7 安裝部署 管理界面介紹

本章重點介紹CentOS 安裝部署Solr7 ,Solr的管理界面介紹,添加核心Core配置,Dataimport導入數據,Documents 在線維護索引,Query複雜查詢和一些常見問題處理辦法。文章底部會提供筆者安裝的Solr7 window版本和centos版本,僅供參考學習使用。

什麼是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#/
注意:訪問http://ip:port/solr/ 顯示404,目前還沒有找到原因,網上說jar沒到導入,可是筆者都導入了。

看到管理頁面說明安裝成功
Solr管理頁面

存在的問題
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_coreconfig=solrconfig.xmlschema=schema.xmldataDir=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 window版本(有數據):鏈接: https://pan.baidu.com/s/1nuPSXQT 密碼: nf9p
solr7 centos版本(沒數據,需自己Dataimport):鏈接: https://pan.baidu.com/s/1yJgI2V2oLFNFycCrNCFKgw 密碼: 0y28

到這裏Solr7 的安裝部署,管理界面介紹就結束了。感謝閱讀!歡迎點評!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章