Solr 5,5从Mysql全量、增量导入数据

1) 将mysql-connector-java-5.1.26.jar放进solr-5.5.0/dist

2)solr-5.5.0/server/solr/core1/conf/solrconfig.xml 配置:

[html]  view plain  copy
  1. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimp     ort.DataImportHandler">  
  2.       <lst name="defaults">  
  3.         <str name="config">data-config.xml</str>  
  4.       </lst>  
  5. </requestHandler>  

[html]  view plain  copy
  1. <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />  
  2. <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-.*\.jar" />  

3) 在solr-5.5.0/server/solr/core1/conf/ 目录下创建data-config.xml, 内容如下:

假设Mysql的数据库用户名密码是root/password,假设已经在mysql中创建了数据库"demo_db", 表"demo_tbl",字段如下:

CREATE TABLE `demo_tbl` (
`id` INT(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` VARCHAR(50) NOT NULL COMMENT '姓名',
`description` VARCHAR(50) NOT NULL COMMENT '描述',
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '时间戳',
	PRIMARY KEY (`id`))
注意,做增量导入,要求数据表有一个timestamp字段,以此来判断每次处理的时间

[html]  view plain  copy
  1. <dataConfig>  
  2.    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"     
  3.     url="jdbc:mysql://127.0.0.1/dmp_platform" user="root" password="password"    />  
  4.     <document name="demo_db">  
  5.        <entity name="demo_tbl" pk="id"  
  6.                  query="select * from demo_tbl"  
  7.                  deltaImportQuery="select * from demo_tbl where id ='${dih.delta.id}'"  
  8.                  deltaQuery="select id from demo_tbl where timestamp > '${dih.last_index_time}'">  
  9.        </entity>  
  10.     </document>  
  11. </dataConfig>  

同时,需要设置solr-5.5.0/bin/solr.in.sh里的时区:

SOLR_TIMEZONE="UTC+8"


4) solr-5.5.0/server/solr/core1/conf/schema.xml,配置:

[html]  view plain  copy
  1. <uniqueKey>id</uniqueKey>  

[html]  view plain  copy
  1. <fieldType name="text_ik" class="solr.TextField">  
  2.        <analyzer type="index">  
  3.          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" />  
  4.        </analyzer>  
  5.        <analyzer type="query">  
  6.          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" />  
  7.          <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>  
  8.        </analyzer>  
  9. </fieldType>  
  10. <field name="_version_" type="long" indexed="true" stored="true"/>  
  11. <field name="_root_" type="string" indexed="true" stored="false"/>  
  12. <field name="id" type="int" indexed="true" stored="true"/>  
  13. <field name="name" type="string" indexed="false" stored="true"/>  
  14. <field name="description" type="text_ik" indexed="true" stored="true"/>  
  15. <field name="timestamp" type="date" indexed="true" stored="true"/>  

description字段采用text_ik即IKAnalyzer进行分词和查询处理,并且此字段进行索引,存储。


5) 数据导入测试



勾选“Auto-Refresh Status”以后,页面会自动刷新状态,否则需要手动点击"Refresh Status"。

增量导入的时候不要勾选“clean”,否则会将之前的数据清除。

做完全量导入以后,在Mysql数据库新增一条数据,然后在页面上做deltaimport:




6) 索引查询测试


参考文献:

https://wiki.apache.org/solr/DataImportHandler

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值