数据导入方式:
全量导入和增量导入:
query 是全量导入时,把你的数据中查到的数据全部导入,deltaImportQuery 和 deltaQuery 是增量导入数据所需要的两个查询语句。deltaImportQuery 后面有个过滤条件是数据库中的唯一标识id = '${dataimporter.delta.id}' 后面这个id 是solr索引库中的id ,固定不变的。deltaQuery 的话后面只需要加个数据库中更新时间的字段 例如updateDate>'${dataimporter.last_index_time}' 即可 ,我们每次导入数据的时候会在索引库的conf 目录下的dataimport.properties文件中记录时间点 也就是last_index_time=日期,就是为了方便做增量索引。只要你的数据库中有更新了某些字段或者添加了新的条数(前提是表中必须有个任意更新字段就要更新updateDate 这个字段),我们只要做个定时的增量索引,就可以做到每次增量时,都可保证solr查询到的数据都是最新的。
全量索引和增量索引的配置区别,首先全量索引会把数据库中所有数据进行索引的更新,增量索引只更新数据库中增删改查过的,要使用增量索引,数据库中要有一个标识字段来表示数据的变化,我们可以使用时间戳来表示,数据更新时时间戳也更新,这样,solr通过比较时间戳的变化来增量更新索引。
Solr导入mongodb数据实例
使用开源项目mongo-connector实现Solr的增量导入功能:
1、 配置mongodb的副本集群模式配置
配置启动mongodb副本集成功;
2、 安装mongo-connector
使用python安装:pip install 'mongo-connector[solr]'
3、solr配置 solrconfig.xml:
<requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" />
solr配置managed-schema:
<uniqueKey>id</uniqueKey>
//修改为
<uniqueKey>_id</uniqueKey>
//添加
<field name="_id" type="string" indexed="true" stored="true" />
<field name="name" type="string" indexed="true" stored="true" />
<field name="area" type="string" indexed="true" stored="true"/>
//注释原有的
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
4、配置好后,访问如下地址,存在JSON数据则成功:
http://127.0.0.1:20001/solr/test01/admin/luke?show=schema&wt=json
5、连接配置
进入mongo-connector目录输入命令:
mongo-connector --auto-commit-interval=0 -m 127.0.0.1:27111 -t http://127.0.0.1:20001/solr/test01 -d solr_doc_manager
6、mongo数据库中插入数据:
7、solr中查询数据:如下图表示mongodb数据导入solr成功