solr6 data import with mysql

环境

  • Ubuntu 12.04
  • Solr 6.3.0
  • JDK8
  1. 数据库表foo,user
    public class Foo {
        private long id;
        private String name;
        private Date updateDate;
        private long userId;
    }
    public class User {
        private long id;
        private String username;
        private Date updateDate;
    }
  1. 从$solr_home/dist 目录复制solr-dataimporthandler-6.3.0.jar,solr-dataimporthandler-extras-6.3.0.jar 到$solr_home/server/solr-webapp/webapp/WEB-INF/lib,然后复制mysql的java驱动包 mysql-connector-java-5.1.30.jar 到相同目录

  2. 复制$solr_home/server/solr/configsets/data_driven_schema_configs 到 $solr_home/server/solr/ ,重命名为foo

  3. 在foo/conf目录下面修改solrconfig.xml, 在<requestHandler name="/select" class="solr.SearchHandler">之上添加下面代码

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
      <lst name="defaults">  
         <str name="config">data-config.xml</str>  
      </lst>  
 </requestHandler>  
  1. 在foo/conf下新建data-config.xml文件, 里面内容如下
<?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>  
    <dataSource name="ds" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/testdb" user="root" password="root" batchSize="-1" />  
  <document>  
        <entity name="foo" pk="id"  dataSource="ds"   
                query="select * from  foo"  
                 deltaImportQuery="select * from foo where id='${dih.delta.id}'"  
                deltaQuery="select id from foo where updateDate > '${dataimporter.last_index_time}'">  
			<field column="id" name="id"/>  
			<field column="name" name="name"/>              
            <field column="updateDate" name="updateDate"/>  
			 <entity name="user" pk="userId" query="username from user where userId='${foo.userId}'">
               <field column="username" name="username"/>  
            </entity>
     </entity>  
  </document>  
</dataConfig>  
  1. 在foo/conf下managed-schema.xml 配置field信息
<field name="id" type="long" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="username" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="updateDate" type="date" indexed="true" stored="true" required="true" multiValued="false" /> 
  1. 启动solr后,添加刚才配置foo core,

  2. corntab里面添加下面脚本,让solr delta import data, 没五分钟导入一次数据

*/5 * * * *	  /home/ubuntu/crontab_script/solr_foo.sh
  1. solr_foo.sh 里面的内容
curl -d "command=delta-import&verbose=false&clean=false&commit:true&optimize:false&core:foo&name:dataimport" "http://127.0.0.1:8983/solr/foo/dataimport?_="+$(date +%s)+"&indent=on&wt=json"
参考文档
最近的文章

ubuntu automatically rotate log file

环境 Ubuntu 14.04查看apache2和tomcat7的自动rotate apache2 和tomcat7 是通过 apt-get install 安装 进入 rotate 的 配置目录 查看apache2 rotate 配置 cd /etc/logrotate.d/vim apache2 logrotate 部分参数 monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。 rotate 5: 一次将存储...…

继续阅读
更早的文章

install solr6 as ubuntu service

环境 Ubuntu 12.04 Solr 6.3.0 JDK8 到官网下载 solr-6.3.0.tgz(JDK版本必须大于等于8) 解压solr-6.3.0.tgz , 得到install_solr_service.sh tar xzf solr-6.3.0.tgz solr-6.3.0/bin/install_solr_service.sh --strip-components=2 安装solr sudo bash ./install_solr_se...…

继续阅读