Solr5.0.0配置增量索引
Posted miye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr5.0.0配置增量索引相关的知识,希望对你有一定的参考价值。
定时索引相关知识
增量更新需要配置个sql(deltaImportQuery、deltaQuery)
deltaImportQuery="select * where id=\'${dih.delta.id}\'" deltaQuery="select id from book_dept where modify_time > \'${dih.last_index_time}\'"
deletedPkQuery="SELECT id FROM book_dept WHERE deleteStatus = 2 "
增量导入注意事项
大家可以看到在上图中,entity标签里,deltaImportQuery属性的select语句与deltaQuery属性的select语句是不一样的,差异在于多了一个
where modify_date > \'${dataimporter.last_index_time}\'.
这是因为solr每次在全量导入时或者增量导入结束时,都会在solrhome\\conf\\dataimport.properties文件中为每一个entity更新一个导入时间标志,我本地截图如下:
这个配置文件里的属性对象可以在db-data-config.xml里以${}占位符方式填充数值。
重点1:所以在执行deltaQuery时,只会导入数据满足为:modify_date > \'${dataimporter.last_index_time}\',以此实现增量导入。否则就是全量导入!!!
重点2:在deltaImportQuery语句中,select字段一定要加上你想更新到索引的字段,否则默认不导入为索引!!
deltaQuery语句查出所有被修改的数据的ID
deltaImportQuery对deltaQuery查出来的ID的数据进行索引更新
deletedPkQuery负责删除 数据库中记录为删除 的数据的索引
修改示例
1 在建成全量索引的前提之下修改data-config.xml 增加 deltaImportQuery和deltaQuery
<entity name="bookInfo" pk="BOOK_ID" query="SELECT BOOK_ID, BOOK_NAME, UPDATE_DATE from EL.T_BOOK" deltaImportQuery="select BOOK_ID,BOOK_NAME from EL.T_BOOK where BOOK_ID = \'${dataimporter.delta.BOOK_ID}\'" deltaQuery="select BOOK_ID from EL.T_BOOK where to_char(UPDATE_DATE,\'yyyy-mm-dd hh24:mm:ss\') > \'${dataimporter.last_index_time}\'" > <field column="BOOK_ID" name="id"/> <field column="BOOK_NAME" name="bookName"/> </entity>
2 在建成全量索引的前提之下修改data-config.xml在data-config.xml中增加 deltaImportQuery和deltaQuery
<entity name="bookInfo" pk="BOOK_ID" query="SELECT BOOK_ID, BOOK_NAME, UPDATE_DATE from EL.T_BOOK" deltaImportQuery="select BOOK_ID, BOOK_NAME from EL.T_BOOK where BOOK_ID = \'${dataimporter.delta.BOOK_ID}\'" deltaQuery="select BOOK_ID from EL.T_BOOK where to_char(UPDATE_DATE,\'yyyy-mm-dd hh24:mm:ss\') > \'${dataimporter.last_index_time}\'" > <field column="BOOK_ID" name="id"/> <field column="BOOK_NAME" name="bookName"/> </entity>
1 中只查ID
2 4 必须一致为表中的字段
5 为固定写法
\'${dataimporter.last_index_time}\'.
因为solr每次在全量导入时或者增量导入结束时,都会在core\\conf\\dataimport.properties文件中为每一个entity更新一个导入时间标志,
这个配置文件里的属性对象可以在db-data-config.xml里以${}占位符方式填充数值。
deltaQuery语句就是查询出来上次创建索引之后数据库发生变化的数据(不包含删除)的ID
注意deltaQuery语句返回的仅仅是发生变化的数据的ID,deltaImportQuery语句则是根据deltaQuery语句返回的ID查询出这些记录的全部内容
以上是关于Solr5.0.0配置增量索引的主要内容,如果未能解决你的问题,请参考以下文章