java - 如何将主 Solr 服务器(基于查询)的部分索引导入到另一个 Solr 服务器,然后稍后进行增量导入(更新后的索引)?

标签 java solr solrj

我有一个主要的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 工作原理的一些很好的引用。

关于java - 如何将主 Solr 服务器(基于查询)的部分索引导入到另一个 Solr 服务器,然后稍后进行增量导入(更新后的索引)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12861143/

相关文章:

Java : BigDecimal - Print the number has input

java - 如何用Solr管理 "paging"?

python - 如何使用 Python 配置和运行 Solr 从 MySQL 的完整数据导入?

java - Solr:在solr查询响应中引入自定义字段

solr - 由 : org. apache.solr.common.SolrException 引起:未找到

java - 网页更新不会部署在我的 netbeans java web 项目中

java - Selenium 处理 AuthenticateRequired - java

java - Solr SimplePostTool : IOException while reading response: java.net.SocketException:来自服务器的意外文件结尾

solr - 使用 SolrJ 中的 CollectionAdminRequest.Create 创建集合

java - 消息新对象和使用静态方法的测试方法