solr - 如何判断 Solr 的索引是否已更改,包括文档的任何修改、添加或删除?

标签 solr solrj

我们有一个用例,我们从远程 solr 实例启动嵌入式 solr 服务器(使用 SolrJ EmbeddedSolrServer api)。这样我们就可以在查询管道中极快地提供文档。

我遇到的问题之一是确定自上次同步完成以来远程 solr 实例是否已以任何方式进行了修改。显然,一种简单的方法是比较文档。一次一个。然而,这将是极其低效的,并且完全否定了快速的全部目的。

感谢您的任何提示或建议。

最佳答案

Lucene 索引的每个版本都分配有一个版本号。此版本号为exposed through the Replication Handler (您可能已经在使用它来将索引复制到本地嵌入式 Solr 实例):

http://host:port/solr/core_name/replication?command=indexversion

Returns the version of the latest replicatable index on the specified master or slave.

如果您想更手动地执行此操作,可以使用自动添加到最新版本 Solr 中所有文档的 _version_ 字段,并使用它来获取任何 _version_ code> 值大于索引中当前最大版本。这假设您使用默认的 _version_ 编号(您必须这样做,因为它也在 Solr Cloud 内部使用)。

关于solr - 如何判断 Solr 的索引是否已更改,包括文档的任何修改、添加或删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52917884/

相关文章:

mysql - 如何将正确的日期时间从 mysql 导入到 solr?

ruby - 使用 Lucene Parser 和 Solr 使用 Sunspot 进行多字段搜索

java - 将多值、逗号分隔的字符串添加到 Solr 不起作用

java - 如何使用 Apache Solr 处理不同的 UTF-8 规范化?

java - 如何在 Solr 中设置查询排序规则

solr - AWS EC2 实例上的 Zookeeper 和 SolrCloud

hadoop - Solr clusterstate.json损坏。可以手动还原吗?

hadoop - Solr 中的结构化和非结构化数据索引

java - 使用 solr 中的函数进行过滤和排序

java - Solr 不区分大小写的查询