Solr DataImportHandler 配置


DIH主要用於從數據庫抓取數據並創建索引。另外還能夠從HTTP(RSS、ATOM)拉數據。


相關概念:
  • Datasource:數據源,包含獲取數據必需的信息:數據位置(url)、數據庫driver、登錄賬號和password
  • Entity:相當於數據庫的一個視圖,能夠從一個表或聯表查詢獲得
  • Processor:數據處理器,負責從數據源中獲取數據、處理、然后增加到索引中
  • Transformer:數據轉換器,可選,負責改動數據、創建新的field、或依據須要把一條記錄變成多條記錄

首先。鏈接數據庫須要 mysql connector
下載地址: http://mvnrepository.com/搜索:mysql connector java
點擊最新版本,點擊“Download ( JAR ) ”下載,或(更方便的方法)復制鏈接地址,然后用wget下載:
cd /opt/app/solr/server/solr-webapp/webapp/WEB-INF/lib/
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar

配置:

solrconfig.xml中加入 requestHandler,比如:
  <requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">db-data-config.xml</str>
    </lst>
  </requestHandler>

config參數指定DIH配置文件的位置。DIH配置文件負責指定數據源、拉取和處理數據的方法。


solrconfig.xml 中加入DIH jar包依賴:
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

DIH配置文件:
根節點:<dataConfig>
  • dataSource
    • type: 數據源類型,如:JdbcDataSource(缺省值),採用SqlEntityProcessor
    • driver: 數據庫驅動,如:com.mysql.jdbc.Driver
    • convertType: 
    • url: 數據庫url
    • user: 你懂的
    • password: 你懂的
  • document
    • entity
      • name: 隨便起的一個標志,能夠給嵌套的entity使用。比方${item.id}(如果name="item")
      • query: 拉取全部數據的語句
      • deltaQuery: 拉取delta數據的語句,如:deltaQuery="select * from xxx where last_modified > '${dataimporter.last_index_time}'"
      • field: 指定 dataSource 的 field 和 solr 的field的相應關系,如:<field name="NAME" column="name" />
      • entity: 嵌套的entity。定義一些一對多的數據。能夠使用父entity的name作為條件,比方:where item_id='${item.id}'
      • transformer: 指定transformer對象。多個的話用逗號分開

配置文件樣例文件名稱:db-data-config.xml
<dataConfig>
  <dataSource type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              convertType="true"
              url="jdbc:mysql://127.0.0.1:3306/db_name"
              user="sa"
              password="123456"/>
  <document>
    <entity name="course_video" query="SELECT id, title, content, tags FROM ts_course_video" >
    </entity>
  </document>
</dataConfig>

須要和另外一個配置文件配合使用:schema.xml。定義了field和fieldType。參考: http://blog.csdn.net/clementad/article/details/47666043
樣例:
<?

xml version="1.0" encoding="UTF-8" ?> <schema name="course_video" version="1.5"> <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" /> <field name="_version_" type="long" indexed="true" stored="true"/> <field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="false" /> <field name="content" type="string" indexed="true" stored="true" required="false" multiValued="false" /> <field name="info_text" type="text_general" indexed="true" stored="false" multiValued="true" /> <copyField source="title" dest="info_text" /> <copyField source="content" dest="info_text" /> <copyField source="tags" dest="info_text" /> <uniqueKey>id</uniqueKey> <fieldType name="string" class="solr.StrField" sortMissingLast="true" /> <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> </schema>


通過HTTP請求(POST或GET)運行各種DIH操作:
請求格式:http://<host>:<port>/ solr/ <collect  ion_name>/ dataimport? command=<command>
當中,各種<command>例如以下:
  • abort:停止當前正在進行的操作
  • delta-import:調用deltaQuery拉取數據。

    能夠帶上幾個額外的參數:&clean=true&commit=true等等(和full_import同樣)

  • full-import:調用query拉取全部數據。

    請求會立即返回。后台有新線程運行重建索引的操作。

    能夠通過status操作查詢狀態。

    額外參數:

    • clean:缺省為true。是否在開始重建索引前清除舊索引
    • commit:缺省為true。是否提交操作請求
    • debug:缺省為false。

      debug模式,不會commit操作。

      假設同一時候須要commit,得帶上commit=true參數

    • entity:缺省為全部的entity。能夠指定某一個或多個entity
    • optimize:缺省為true。是否須要在完畢操作后優化索引
  • reload-config:假設改動了配置文件,運行這個命令使它生效
  • status:返回各種統計數據、以及DIH的當前狀態

(原創文章。轉載請注明轉自Clement-Xu的博客)





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM