如何将Hibernate Lucene索引设置为指向共享位置。(因此在本地服务器中不生成索引)

时间:2019-02-19 06:10:16

标签: hibernate lucene hibernate-search

在我的应用程序中,我将实现休眠的Lucene。我的应用程序将部署在集群环境中。

现在,我无法找出方法,我可以将所有lucene索引的位置指向一个共享位置。因此可以通过网络进行访问。

1 个答案:

答案 0 :(得分:1)

您可以,但它并不像拥有一个共享目录那样简单:您的应用程序的两个实例不能同时访问相同的索引文件。

因此,首选的解决方案通常是:

  1. 只有一个“主”节点访问索引的“主”副本,并让所有其他节点向该“主”节点发送“写请求”。
  2. 定期将索引的“主”副本复制到“从属”节点,以便他们可以读取索引,即使其副本始终总是有些过时。

Hibernate Search提供了两种机制的实现:

  1. 借助JMS backendJGroups backend实现了主/从体系结构。请注意,JMS后端的bug明显较少。另外请注意,您将必须自行配置JMS或JGroups,这可能还需要一些专业知识。
  2. 通过filesystem-master and filesystem-slave directory providers实现了复制。

所以,这有点复杂。

另一个选项(也许更简单)是使用Elasticsearch integration,将索引移动到远程群集。它使用起来更简单,但由于仍处于实验阶段,因此边缘有些粗糙。

我们计划在下一版本的Hibernate Search(版本6)中为Elasticsearch集成提供一流的支持。