不信网恋 发表于 2016-12-16 06:42:18

Solr 数据导入 <一>DIH简单使用

  使用DataImportHandler进行简单数据导入还是比较有效的,特别是DIH中针对简单的数据库表,可以把完全导入和增量导入合并成一个语句,非常方便。我的使用方式如下所示
  1。配置schema
Xml代码


[*]<requestHandlername="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler">
[*]<lstname="defaults">
[*]<strname="config">/home/tomcat/bin/solr/conf/data-config.xml</str>
[*]</lst>
[*]</requestHandler>

  2.添加data-config文件
  data-config.xml
Xml代码


[*]<dataConfig>
[*]<dataSourcetype="JdbcDataSource"
[*]driver="com.mysql.jdbc.Driver"
[*]url="jdbc:mysql://127.0.0.1/db"
[*]user="root"
[*]password="pass"
[*]batchSize="-1"/>
[*]<document>
[*]<entityname="id"pk="id"
[*]query="selectid,username,text,catfromhotwhere'${dataimporter.request.clean}'!='false'ORtimestamp>'${dataimporter.last_index_time}'">
[*]<fieldcolumn="id"name="id"/>
[*]<fieldcolumn="text"name="text"/>
[*]<fieldcolumn="username"name="username_s"/>
[*]<fieldcolumn="cat"name="cat_t"/>
[*]</entity>
[*]</document>
[*]</dataConfig>

  3.让DIH周期性的运行
  修改dataimport.properties文件,这个是自动生成的,同在solr/conf下,添加参数
  interval 间隔时间 单位 分钟
  syncEnabled=1 打开周期运行
  params 其实就是具体调用的url,周期运行就是周期性的访问一个url
Java代码


[*]#WedDec2809:29:42UTC2011
[*]port=8983
[*]interval=5
[*]last_index_time=2011-12-2809\:29\:26
[*]syncEnabled=1
[*]webapp=solr
[*]id.last_index_time=2011-12-2809\:29\:26
[*]server=127.0.0.1
[*]params=/select?qt\=/dataimport&command\=full-import&clean\=false&commit\=true&optimize\=false

  到此还并不能周期运行,在solr的wiki中有一段实现这个功能的代码,但并没有加入到solr的发行包中,于是我们需要重新编译这段代码,打包放到webapp/solr/WEB-INF/lib中才行
Xml代码


[*]<web-app>
[*]<listener>
[*]<listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
[*]</listener>
[*]...
[*]</web-app>
  

  apache-solr-dataimporthandler-scheduler.jar下载见原文链接:http://martin3000.iyunv.com/blog/1328833
页: [1]
查看完整版本: Solr 数据导入 <一>DIH简单使用