首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Linux 下 Solr 5.5 整合 Tomcat 8 實戰:MySQL 數據導入與定時增量索引

     編輯:Java 綜合教學

環境準備

  • JDK 8、Tomcat 8.5.4、Solr 5.5.3、MySQL 5.5
  • 上傳至 /usr/local/solr/ 目錄

建立 Solr Core

cd /usr/local/solr/solr-5.5.3/bin
./solr start
./solr create -c demo
./solr stop -all

Core 目錄生成於 server/solr/demo。

部署至 Tomcat

  1. mkdir -p /usr/local/solr/apache-tomcat-8.5.4/webapps/solr
  2. 拷貝 solr-5.5.3/server/solr-webapp/webapp/* → webapps/solr/
  3. 建立 webapps/solr/solrhome,拷貝 server/solr/*(含 demo core)至其中。
  4. 拷貝 server/lib/ext/*.jar、dist/solr-dataimporthandler-*.jar、dist/solr-dataimporthandler-extras-*.jar → webapps/solr/WEB-INF/lib/
  5. 拷貝 server/resources/log4j.properties → webapps/solr/WEB-INF/classes/
  6. 修改 web.xml 添加 solr/home 環境變量:
    <env-entry>
      <env-entry-name>solr/home</env-entry-name>
      <env-entry-value>/usr/local/solr/apache-tomcat-8.5.4/webapps/solr/solrhome</env-entry-value>
      <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
  7. 修改 solrhome/demo/conf/solrconfig.xml 中 <lib> 路徑為絕對路徑(指向 solr-5.5.3/contrib/.../lib、dist/)。
  8. 開放 8080 端口,啟動 Tomcat,訪問 https://IP:8080/solr 看到 Core demo。

MySQL 數據導入配置

  1. 拷貝 mysql-connector-java-5.1.22-bin.jar → WEB-INF/lib/
  2. 建立 solrhome/demo/conf/data-config.xml:
    <dataConfig>
      <dataSource name="solrdemo" type="JdbcDataSource"
        driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://192.168.229.1:3306/solrdemo"
        user="root" password="root"/>
      <document>
        <entity name="user" dataSource="solrdemo"
          query="select id, name, address from user where valid=1"
          deltaImportQuery="select id,name,address from user where ID='${dataimporter.delta.id}'"
          deltaQuery="select id from user where updatetime > '${dataimporter.last_index_time}'"
          deletedPkQuery="select id from user where valid=0">
          <field column="id" name="id"/>
          <field column="name" name="name"/>
          <field column="address" name="address"/>
        </entity>
      </document>
    </dataConfig>
  3. 修改 managed-schema 添加欄位:
    <field name="name" type="string" indexed="true" stored="true" required="true"/>
    <field name="address" type="string" indexed="true" stored="true" required="true"/>
  4. 在 solrconfig.xml 註冊 DataImportHandler:
    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
      <lst name="defaults"><str name="config">data-config.xml</str></lst>
    </requestHandler>
  5. 重啟 Tomcat,進入 Admin UI → Core demo → Dataimport → Execute 全量導入。

定時增量索引:DataImportScheduler

  1. 下載 apache-solr-dataimportscheduler.jar → WEB-INF/lib/
  2. web.xml 添加監聽器:
    <listener>
      <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
    </listener>
  3. 建立 solrhome/conf/dataimport.properties:
    syncEnabled=1
    syncCores=demo
    server=192.168.229.100
    port=8080
    webapp=solr
    params=/dataimport?command=delta-import&clean=false&commit=true
    interval=1
    reBuildIndexInterval=2
    reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
    reBuildIndexBeginTime=03:00:00
  4. 重啟 Tomcat,日誌顯示每 1 分鐘增量、每 2 分鐘全量重建(按配置)。

驗證

  • 向 MySQL 插入新記錄 → 1 分鐘內 Solr Query 可檢索到。
  • 軟刪除 valid=0 → 通過 deletedPkQuery 自動從索引移除。

資源與參考

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved