我了解到并理解 Elasticsearch、Apache Solr 和 Hibernate Search 都是基于 Apache Lucene 库的。它们提供快速的全文搜索,并且全部使用 JPA 注释、实现 JPA 和/或定义自定义注释。它们主要用于 RDBMS/NoSQL 数据存储之外。索引和可搜索的数据以文档的形式存在。

有人提出问题 Solr vs Hibernate Search - Which to choose and When? 甚至“Elasticsearch vs Solr”或“Elasticsearch vs Hibernate Search”,我完全可以接受
但是然后有这个 Hibernate Search/Elasticsearch connector 作为将 Hibernate Search 和 Elasticsearch 一起使用的方法,或者 this post 询问“如何将 Hibernate 和 Solr 集成在一起?”答案是如何将 Hibernate Search 和 Solr 集成在一起,这对我来说是不同的,对吧?

假设上述总结是正确的,并且给出的链接帖子让我感到困惑:为什么除了 Hibernate Search 之外,人们还考虑或确实使用 Elasticsearch 或 Solr?这不是多余的吗?或者 Hibernate Search 是否为 Solr/Elasticsearch 提供了 Hibernate ORM 没有的任何接口(interface),因此仅用作某种适配器?

最佳答案

我还没有实现elasticsearch,但我将其视为Hibernate 搜索的后端。

我在 Hibernate 搜索中遇到的一个问题是,如果我在独立模式下运行 8 个 JBoss 服务器的集群,默认情况下,它们在本地文件系统上都有一个单独的索引。当通过 hibernate 进行更改时,它只会更新该单个节点上的索引。使所有索引保持最新变得很困难。

为了解决这个问题,我们一直在研究在集群配置中运行 Hibernate 搜索的推荐方法,但事实证明,这很难正常运行。使用 elasticsearch 看起来我们可以将搜索服务器移到 Web 应用程序之外并单独管理它,而无需更改任何旧的 Hibernate Search 代码。

关于hibernate - 为什么将 Elasticsearch 或 Apache Solr 与 Hibernate Search 一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21174990/

10-15 20:06