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

How to set Hibernate Lucene index to be pointed to shared location.(so no index generated in local server)

在我的应用程序中,我将实现 hibernate lucene。我的应用程序将部署在集群环境中。

现在,我无法找出如何将所有 lucene 索引的位置指出到一个共享位置。所以可以通过网络访问。

可以,但这不像共享目录那么简单:应用程序的两个实例不能同时访问相同的索引文件。

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

  1. 只有一个 "master" 节点访问索引的 "master" 副本,并让所有其他节点将 "write requests" 发送到此 "master" 节点。
  2. 定期将索引的 "master" 副本复制到 "slave" 个节点,以便他们可以阅读它,即使他们的副本总是稍微过时。

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

  1. master/slave 架构的实现得益于 JMS backend or a JGroups backend。请注意,JMS 后端的故障明显减少。另请注意,您必须自己配置 JMS 或 JGroups,这可能也需要一些专业知识。
  2. 由于filesystem-master and filesystem-slave directory providers实现了复制。

所以,这有点复杂。

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

我们计划在下一个 Hibernate Search 版本 6 中首先 class 支持 Elasticsearch 集成。