导航

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

Posted on 2013-12-19 14:47  酷鱼影子  阅读(260)  评论(0编辑  收藏  举报

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

1。配置schema

 

 

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

 

2.添加data-config文件

data-config.xml

 

 

Xml代码  收藏代码
  1. <dataConfig>  
  2.   <dataSource type="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.     <entity name="id" pk="id"    
  10.             query="select id,username,text,cat  from hot where '${dataimporter.request.clean}' != 'false' OR timestamp > '${dataimporter.last_index_time}'">  
  11.          <field column="id" name="id"/>  
  12.          <field column="text" name="text"/>  
  13.          <field column="username" name="username_s"/>  
  14.          <field column="cat" name="cat_t"/>  
  15.     </entity>  
  16.   </document>  
  17. </dataConfig>  

 

3.让DIH周期性的运行

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

interval 间隔时间 单位 分钟

syncEnabled=1 打开周期运行

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

 

 

Java代码  收藏代码
  1. #Wed Dec 28 09:29:42 UTC 2011  
  2. port=8983  
  3. interval=5  
  4. last_index_time=2011-12-28 09\:29\:26  
  5. syncEnabled=1  
  6. webapp=solr  
  7. id.last_index_time=2011-12-28 09\: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