在多个数据库实例中使用 Hibernate-search

Use Hibernate-search in multiple database instances

我在 Hibernate 搜索应用程序中工作,目前我一直在为 postgres 数据库编制索引,在我创建了一些 Lucene 查询之后,到目前为止一切正常。

我担心是否可以对多个实例使用 Hibernate-search(其中所有实例都具有相同的数据库结构)。那是因为我想在多个实例(不仅是本地)中拆分信息,避免将所有数据存储在一个实例中。

  1. 执行此操作的最佳方法是什么?
  2. 我可以使用 Hibernate-search 来执行此操作吗?

我认为有一种方法可以在同一个 Lucene 索引中包含多个实例,因此无论数据来自何处,我都可以查询该索引以获取和检索信息。但我认为索引过程应该与往常不同。

目前最好的方法是使用 Hibernate Search 6 及其 Elasticsearch 集成。这个想法是,Hibernate Search 不是在本地建立索引,而是委托给一组 Elasticsearch 节点(如果需要,它可以只是一个节点)。集群将对您的应用程序完全透明。

如果您当前使用的是 Hibernate Search 5,则升级到 6 需要一些工作,因为工件 ID、内部架构和 API 已更改。 Hibernate Search 6 目前也处于 Beta 阶段,因此 API 相当稳定,但迁移指南尚未准备好,例如。我建议您在跳转之前先看看 getting started guide for Search 6

如果您想继续使用 Search 5,或者如果您出于某种原因想避免使用 Elasticsearch,那么您唯一剩下的选择就是使用依赖于 JMS 或 JGroups 的 Search 5 "clustering" 后端。然而,这些架构的设置很复杂,这就是我们在 Search 6 中放弃它们(至少现在是这样)并专注于 Elasticsearch 集成的原因。参见 here for JMS and here for JGroups