我正在尝试使用delta导入查询来处理我的solr架构。当我执行完全导入时,solr索引会正确填充。但是,当我尝试执行delta导入时,看起来它正常处理 - 并在solr gui中给出以下结果:
Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.
Requests: 1, Fetched: 0, Skipped: 0, Processed: 0
这是正确的,因为自完整查询以来数据库应该没有更新。
但是,当我在增量更新后对核心进行完整查询时,它会显示所有文档都已消失,并且核心为空!所有这些都是通过solr web admin gui做的。
以下是delta导入处理程序配置文件:
<entity name="episode" query="select episode_id from db.episode"
deltaQuery="select episode_id from db.episode where last_modified > '${dih.last_index_time}'"
deltaImportQuery="select episode_id from db.episode where episode_id = '${dih.delta.episode_id}'">
</entity>
以下是架构文件中的相关内容:
<fields>
<field name='episode_id' indexed="true" stored="true" type='int' required="true"/>
</fields>
这是我的solrconfig.xml中的DIH内容:
<lib dir="${solr.install.dir:../../../..}/lib/" regex="mysql-connector-java-5.1.35-bin.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">episodeDIHconfigfile.xml</str>
</lst>
</requestHandler>
为什么会发生这种情况?我认为delta查询只会添加到索引中,而不仅仅是删除所有内容!所有人都非常感谢...
答案 0 :(得分:9)
既然你说你正在使用admin gui,我猜你已经勾选了那个小“干净”复选框,这意味着你的导入开始于clean
标志设置为true。取消选中该复选框,然后重试。
如果将clean
设置为true,则在索引开始之前擦除整个索引。对于完全导入非常有用,但显然不适用于增量!