Solr6.4.2+jetty+mysql

下載地址

solr : solr官網地址

部署

  • 由于solr默認帶有jetty服務器,所以使用默認jetty服務器

  • 解壓后的目錄結構


    解壓后的目錄結構

啟動

cd solr-6.4.2;
bin/solr start -p [端口名];
bin/solr stop -p [端口名];
bin/solr restart -p [端口名];

啟動成功后的頁面

創建core

core 是存儲索引的地方

  1. 這次是連接mysql,到/Users/wangxun/Downloads/solr-6.4.2/server/solr/configsets 復制data_driven_schema_configs 文件夾 mycollect

  2. 為了導入數據和鏈接mysql,我們還需要導入兩個重要的jar包。由于mysql的jar包并沒有在項目中,我是復制了一份放到了dist目錄下面了。另外兩個需要的jar包就是dist目錄下帶有“dataimport”標識的jar包。
    然后打開myCollections/conf/solrconfig.xml,引用上面提到的jar包,如下。

<lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

  <!-- mysql導入增加的包開始-->
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-5.1.30.jar" />
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
  <!-- mysql導入增加的包結束-->

之前我引入的是5.1.20,一直報錯。后來更換了jar就可以了

  1. 建立表

  2. 將表跟solr的實體對應上。myCollections/conf/solrconfig.xml,搜索 <requestHandler name="/select" class="solr.SearchHandler"> ,然后在該行之上添加如下代碼。

<!--mysql 數據庫導入開始 -->
  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
      <lst name="defaults">  
         <str name="config">data-config.xml</str>  
      </lst>  
 </requestHandler> 
  <!--mysql 數據庫導入結束 -->
    
  <requestHandler name="/select" class="solr.SearchHandler">
  1. 配置data-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>  
  <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.198.100:3306/blade" user="root" password="123456" batchSize="-1" />  
  <document>  
    <entity name="person" pk="id"  dataSource="source1"   
                query="select * from person"  
                deltaImportQuery="select * from person where id='${dih.delta.id}'"  
               deltaQuery="select id from person where updatetime> '${dataimporter.last_index_time}'">  
      <field column="id" name="id"/>  
      <field column="name" name="name"/>  
      <field column="money" name="money"/>  
      <field column="content" name="content"/> 
      <field column="updatetime" name="updatetime"/>   
    </entity>  
  </document>  
</dataConfig>

dataSource是數據庫數據源。Entity就是一張表對應的實體,pk是主鍵,query是查詢語句。Field對應一個字段,column是數據庫里的column名,后面的name屬性對應著Solr的Filed的名字。其中solrdata是數據庫名,goods是表名。

其中deltaQuery是增量索引,原理是從數據庫中根據deltaQuery指定的SQL語句查詢出所有需要增量導入的數據的ID號。然后根據deltaImportQuery指定的SQL語句返回所有這些ID的數據,即為這次增量導入所要處理的數據。核心思想是:通過內置變量“${dih.delta.id}”和 “${dataimporter.last_index_time}”來記錄本次要索引的id和最近一次索引的時間。

  1. managed-schema配置field信息
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="_version_" type="long" 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="name" type="string" indexed="true" stored="false" />
    <field name="money" type="int" indexed="true" stored="false" />
    <field name="content" type="string" indexed="true" stored="true" />
    <field name="updatetime" type="date" indexed="true" stored="true" />
  1. 創建core


    創建core
  2. 執行


    執行
  3. 查詢測試


    查詢測試
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容