有没有办法找出一天中更新/写入到 solr 索引的文档

Posted

技术标签:

【中文标题】有没有办法找出一天中更新/写入到 solr 索引的文档【英文标题】:Is there a way to find out the documents updated/written during a day to a solr index 【发布时间】:2012-01-30 06:38:24 【问题描述】:

我们有一个产品作为我们组织内各个产品团队的参考数据来源。数据已存储在 solr 索引中,我们已公开服务以向客户提供对这些数据的访问。

现在我们需要提供一种事件驱动机制,以便客户端在服务器端发生某些事情时得到通知。

虽然我知道这很容易使用 Oracle coherence 等产品实现,但 solr 并不是适合此目的的正确产品。但是现在我们不可能倒退并改变解决方案。

所以,为了达到这个要求,在某种程度上,我们公开了一个 RESTFul 服务,它返回特定索引中的所有文档,客户端应用程序继续访问这个 resful 服务,以便在一定数量的迭代中获得完整的数据集。

我知道这不是最好的方法,但我们的可用选项有限,因为我们不希望为此使用另一个数据存储。

作为对这种方法的改进,我们希望公开另一个服务,该服务将在特定时间范围内完成的插入/更新/删除返回到 solr 索引。类似于 /companyIndex/itr/15 的东西,它在过去 15 分钟内对公司指数进行了修改。这将帮助客户减少他们将要处理的数据量。一旦客户端从索引中获取完整的数据集,他们可以稍后使用增量更新,这样客户端数据集将与主数据集同步。仍然会有一些延迟,但没关系。

有没有办法使用 solr/lucene 本身来实现这一点? solr 是否维护一些可以公开的审计跟踪?

虽然我们可以通过数据加载层保留这些信息,但我们想知道是否可以使用 solr 提供的东西?

有什么建议/意见吗?

【问题讨论】:

【参考方案1】:

有几种方法可以解决这个问题。 Lucene 在IndexDeletionPolicy(参见IndexCommits)中公开了有关提交的信息,Solr 使用它来支持自己的复制。您可能可以自己挂钩复制并检索当前版本的索引以及同时哪些文件发生了更改(请参阅HTTP API for replication)。

如果您想了解有关每个提交事件的更多详细信息,则必须深入挖掘,但我相信您可以直接挂接到 Lucene 以自己观察事件(与 Solr 的复制处理程序相同)确实)然后通过 RabbitMQ 或其他一些消息队列广播它们以将信息公开给多个客户端。

希望这会为您指明正确的方向!

【讨论】:

当然。我至少知道在哪里可以进一步挖掘。谢谢!

以上是关于有没有办法找出一天中更新/写入到 solr 索引的文档的主要内容,如果未能解决你的问题,请参考以下文章

如何在solr中获取lucene索引的版本

Pandas - Python 2.7:如何将时间序列索引转换为一天中的秒数?

如何查询 SOLR 的空字段?

Solr Update插件自定义Update Chain按条件更新索引

按一天中的时间安排网络测功机的数量

Cloud Functions for Firebase - 在一天中的特定时间更新值,每天 [重复]