我正在尝试使用 DataImportHandler 使我的索引与 SQL 数据库保持同步(我认为这是一件非常普通的事情)。由于我的数据库将非常大,我想使用此方法http://wiki.apache.org/solr/DataImportHandlerDeltaQueryViaFullImport使用增量导入,因此调用的格式为http://localhost:8983/solr/Items/dataimport?command=full-import&clean=false
。这对于添加项目非常有效。
我的数据库中有一个单独的DeletedItems表,其中包含已从Items表中删除的项目的主键,以及它们被删除的时间。作为 DataImport 调用的一部分,我希望能够根据以下查询从我的索引中删除相关项目
SELECT Id FROM DeletedItems WHERE WasDeletedOn > '${dataimporter.last_index_time}'
但我不知道该怎么做。上面的链接暗指它
在这种情况下,这显然意味着如果您还想使用 deletedPkQuery ,那么在运行 delta-import 命令时仍然需要。
但是将 deletedPkQuery 设置为上述 SQL 查询似乎不起作用。然后我读到 deletedPkQuery 仅适用于 delta-imports,所以我被迫向我的 solr 服务器发出两个请求作为同步过程的一部分?这似乎不正确,因为操作是由属性参数化的,该dataimporter.last_index_time
属性会发生变化。当然,这两个步骤都需要在一个“原子”动作中完成?有任何想法吗?