`
kuyuyingzi
  • 浏览: 53642 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

1。配置schema

Xml代码 收藏代码
  1. <requestHandlername="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler">
  2. <lstname="defaults">
  3. <strname="config">/home/tomcat/bin/solr/conf/data-config.xml</str>
  4. </lst>
  5. </requestHandler>

2.添加data-config文件

data-config.xml

Xml代码 收藏代码
  1. <dataConfig>
  2. <dataSourcetype="JdbcDataSource"
  3. driver="com.mysql.jdbc.Driver"
  4. url="jdbc:mysql://127.0.0.1/db"
  5. user="root"
  6. password="pass"
  7. batchSize="-1"/>
  8. <document>
  9. <entityname="id"pk="id"
  10. query="selectid,username,text,catfromhotwhere'${dataimporter.request.clean}'!='false'ORtimestamp>'${dataimporter.last_index_time}'">
  11. <fieldcolumn="id"name="id"/>
  12. <fieldcolumn="text"name="text"/>
  13. <fieldcolumn="username"name="username_s"/>
  14. <fieldcolumn="cat"name="cat_t"/>
  15. </entity>
  16. </document>
  17. </dataConfig>

3.让DIH周期性的运行

修改dataimport.properties文件,这个是自动生成的,同在solr/conf下,添加参数

interval 间隔时间 单位 分钟

syncEnabled=1 打开周期运行

params 其实就是具体调用的url,周期运行就是周期性的访问一个url

Java代码 收藏代码
  1. #WedDec2809:29:42UTC2011
  2. port=8983
  3. interval=5
  4. last_index_time=2011-12-2809\:29\:26
  5. syncEnabled=1
  6. webapp=solr
  7. id.last_index_time=2011-12-2809\:29\:26
  8. server=127.0.0.1
  9. params=/select?qt\=/dataimport&command\=full-import&clean\=false&commit\=true&optimize\=false

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

Xml代码 收藏代码
  1. <web-app>
  2. <listener>
  3. <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
  4. </listener>
  5. ...
  6. </web-app>


apache-solr-dataimporthandler-scheduler.jar下载见原文链接:http://martin3000.iteye.com/blog/1328833

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics