作者:高朗1_114 | 来源:互联网 | 2023-05-18 22:43
Solr索引的修改方式:1.使用SolrDataImport的delta_import部分增量导入的功能:Solr通过数据库导入有两种方式,full-import和delta-import,de
Solr索引的修改方式:
1.使用Solr Data Import的 delta_import部分增量导入的功能:
Solr通过数据库导入有两种方式,full-import和delta-import,delta-import增量导入的原理是利用每次我们进行import的时候在solr.home\conf下面生成的dataimport.properties文件
item.last_index_time=2014-01-24 18\:31\:47
last_index_time=2014-01-24 18\:31\:47
其实last_index_time是最近一次索引(full-import或者delta-import)的时间。
通过比较这个时间和我们数据库表中的timestamp列即可得出哪些是之后修改或者添加的
可通过http://:/solr/dataimport查看
修改data-config.xml如下:
其中 query是获取全部数据的SQL,deltaImportQuery是获取增量数据时使用的Sql,deltaQuery是获取pk的SQL,parentDeltaQuery是获取父Entity的pk的SQL
Full Import工作流程,执行EntityQuery获取所有数据,针对每个行数据Row,获取pk,组装子Entity的Query,执行子Entity的Query,获取子Entity的数据
Delta Import工作流程 查找子Entity直到没有为止,执行Entity的deltaQuery获取变化的pk合并子Entity parentDeltaQuery得到的pk,针对每个pk Row,组装父Entity的
parentDeltaQuery,执行parentDeltaQuery,获取父Entity的pk,执行deltaImportQuery获取自身所有的变化数据,如果没有deltaImportQuery,就执行Query进行原来的拼接
注意:
子Entity的query必须引用父Entity的pk
子Entity的parentDeltaQuery必须引用自己的pk
子Entity的parentDeltaQuery必须返回父Entity的pk
deltaImportQuery引用的必须是自己的pk
item.last_index_time=2014-01-24 18\:31\:47中的item表示data-config.xml中的document下面的标签,可以有选择的指定一个或多个,使用多个可以使得多个entity同时运行
如果不选择此参数那么所有的都会被运行
clean 表示删除索引,默认为true
commit 表示是否索引完成后提交,默认为true
opimize 对索引进行优化,默认为true,每次操作索引最后执行它,但是如果操作很频繁的话,就需要选择性的执行它
debug 是否以调试模式运行,适用于开发中,注意每次以调试模式运行,那么默认不会自动提交,请加参数commit=true才行
当对索引修改时,可以编写过滤器来HTTP请求调用这个来操作索引,http://192.168.2.123/solr/dataimport?command=delta-import&clean=false&commit=true&optimize=true
由于deltaImport是要比对配置文件和数据库数据的最后修改时间,那么如果想要先物理删除数据库中的某条记录,再去删除索引这就不行了,因为数据库中没有这条数据,无
法和配置文件的最后修改时间进行比对。
2. 利用xml格式进行索引的修改
05991
Walla Walla
Python
Set 表示修改 ,add表示新增
05991
delete的时候必须要有id
可以通过去数据库查找数据后,拼接成XML,通过HTTP请求将数据流提交到Solr服务器。