我有一个主要的solr服务器(solr1),它存储所有文档的索引,并希望实现以下功能:
1. 首先从 solr1 完全导入我最近(最近 1 或 2 周)更新/创建的文档。
2. 定期进行增量导入,将我的文档更改从 solr1 复制到 solr2。 - 在此期间文档可能被删除、更新、创建。
-- 作为SqlEntityProcessor支持的功能,将数据从DB导入到Solr。
http://wiki.apache.org/solr/DataImportHandler#SolrEntityProcessor
SolrEntityProcessor 可以基于查询(使用配置文件中的查询参数)从一个 Solr 完全导入到另一个 solr,但似乎无法稍后进行增量导入:没有 deltaImportQuery 和 deltaQuery 配置,这在 SqlEntityProcessor 中受支持。
如何实现这个功能?
感谢您的帮助和回复:)
最佳答案
您应该能够通过使用可以模拟此功能的 Solr 字段和过滤器查询来实现 deltaImportQuery 的等效项。
我建议在您的 Solr 架构中添加一个 timestamp
字段。以下是 solr example schema 中的字段定义.
<field name="timestamp" type="date" indexed="true" stored="true"
default="NOW" multiValued="false"/>
这将创建一个记录上次将记录添加到 Solr 索引的字段,您可以向 SolrEntityProcessor 查询添加过滤器查询 fq
选项,以将结果限制为仅时间戳字段值大于或等于上次在过滤器查询中使用 DateMath 运行导入处理程序的项目。
以下是有关 DateMath 工作原理的一些很好的引用。
- DateMathParser
- Solr Date Format (我知道您可能没有使用 LucidWorks Solr,但示例仍然适用)。
关于java - 如何将主 Solr 服务器(基于查询)的部分索引导入到另一个 Solr 服务器,然后稍后进行增量导入(更新后的索引)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12861143/