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 - 将自定义类与 ArrayLists 一起使用

java - 返回哪个条件终止循环

maven - Dspace 6.3 Solr Webapp 构建错误 org.reSTLet.jee - 镜像被阻止

multithreading - ConcurrentUpdateSolrClient 如何处理更新请求?

solr - 如何在SolrJ - CloudSolrClient中进行BasicAuthentication?

java - jni4net c# 与 jni4net java.lang.ClassNotFoundException 中的 java

indexing - Apache solr 频繁添加/编辑/删除记录

apache - 将 http 重定向到 https bitnami apache

java - 如何在 Solr 中获取最后的索引记录?

java - 创建泛型类的具体实例数组