Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法找到一天内更新/写入solr索引的文档_Java_Solr_Near Real Time - Fatal编程技术网

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

Java 有没有办法找到一天内更新/写入solr索引的文档,java,solr,near-real-time,Java,Solr,Near Real Time,我们有一个产品,作为我们组织内各个产品团队的参考数据源。数据已存储在solr索引中,我们已公开服务,为客户端提供对该数据的访问 现在,我们需要提供一种事件驱动机制,以便在服务器端出现问题时通知客户端 虽然我知道这很容易用Oracle coherence等产品实现,但solr并不是适合这一目的的合适产品。但现在我们不可能倒退,改变解决方案 因此,在某种程度上,为了满足需求,我们公开了一个RESTFul服务,它返回特定索引中的所有文档,客户机应用程序不断地使用这个RESTFul服务,以便在一定次数的

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

现在,我们需要提供一种事件驱动机制,以便在服务器端出现问题时通知客户端

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

因此,在某种程度上,为了满足需求,我们公开了一个RESTFul服务,它返回特定索引中的所有文档,客户机应用程序不断地使用这个RESTFul服务,以便在一定次数的迭代中获得完整的数据集

我知道这不是最好的方法,但我们有有限的选择,因为我们不想要另一个数据存储

作为对这种方法的改进,我们希望公开另一个服务,该服务在特定时间段内返回solr索引的insert/updates/deleted done。类似于/companyIndex/itr/15,它给出了在过去15分钟内对公司指数所做的修改。这将帮助客户机减少他们将要处理的数据量。一旦客户机从索引中获取完整的数据集,他们以后就可以使用增量更新,这样客户机数据集将与主数据集同步。仍然会有一些滞后,但这很好

有没有办法通过solr/lucene本身来实现这一点?solr是否维护soem类型的审计跟踪,这些跟踪可能会被公开

虽然我们可以在数据加载层保存这些信息,但我们想知道solr是否可以使用一些可用的东西


有什么建议/意见吗

有几种方法可以解决这个问题。Lucene在(请参阅)中公开有关提交的信息,Solr使用这些信息为自己的复制提供动力。您可以自己挂接到复制中,检索索引的当前版本以及在此期间哪些文件发生了更改(请参阅)

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


希望这能为你指明正确的方向

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