在 Spring 启动应用程序中使用 Elasticsearch 全文搜索 sql 数据库的正确方法
Proper way to full text search an sql database using Elasticsearch in a Spring boot application
我想在我的 Spring 启动应用程序中添加全文搜索功能,数据应存储在 SQL 数据库中,我还了解到不建议使用 ES 作为主数据库.
我想到的一种方法是:创建、更新和删除操作可以在主 SQL 数据库和 ES 中完成(我们可以使用 Java 高级 REST 客户端来完成),例如,当在 SQL 中插入一行时,我们也在 ES 中对其进行索引,然后我们使用 Elasticsearch 执行搜索。
我想我们也可以使用 Hibernate 搜索。
这是正确的方法吗?否则有什么建议吗?
如果您只需要简单的全文搜索,请考虑 postgresql,我将其用于索引和搜索文档内容:https://www.postgresql.org/docs/9.1/textsearch-controls.html。
主要区别在于 Hibernate Search 提供 JPA 与您选择的索引(Lucene 或 Elasticsearch)之间的集成:
Hibernate Search 将根据 JPA 实体中的更改自动 add/update/delete 全文索引中的文档(只要您提交事务)。
Hibernate Search 将允许您构建全文查询(全文世界),并将结果检索为托管实体(JPA 世界)。
据我了解,Spring-Data-Elasticsearch 专注于访问 Elasticsearch,没有任何 JPA 集成。也就是说,可以使用Spring-Data-JPA,也可以使用Spring-Data-Elasticsearch,但是它们之间不会通信。您将有两个单独的模型,您将分别对其进行更新和查询。
其他一些元素:
如果不需要分布式索引,Hibernate Search 可以在嵌入式 Lucene 模式下 运行,无需所有 Elasticsearch 堆栈。它可能会更轻巧。
由于抽象层的原因,在自定义 Elasticsearch 映射或使用高级 Elasticsearch 功能时,Hibernate Search 目前不是很灵活。不过,这种情况在未来会有所改变(Hibernate Search 6)。
Spring-Data-HibernateSearch 模块正在开发中,可以从两全其美中获益。它尚未发布,也没有很好的记录,但是:https://github.com/snowdrop/spring-boot-hibernate-search-booster
我想在我的 Spring 启动应用程序中添加全文搜索功能,数据应存储在 SQL 数据库中,我还了解到不建议使用 ES 作为主数据库. 我想到的一种方法是:创建、更新和删除操作可以在主 SQL 数据库和 ES 中完成(我们可以使用 Java 高级 REST 客户端来完成),例如,当在 SQL 中插入一行时,我们也在 ES 中对其进行索引,然后我们使用 Elasticsearch 执行搜索。 我想我们也可以使用 Hibernate 搜索。 这是正确的方法吗?否则有什么建议吗?
如果您只需要简单的全文搜索,请考虑 postgresql,我将其用于索引和搜索文档内容:https://www.postgresql.org/docs/9.1/textsearch-controls.html。
主要区别在于 Hibernate Search 提供 JPA 与您选择的索引(Lucene 或 Elasticsearch)之间的集成:
Hibernate Search 将根据 JPA 实体中的更改自动 add/update/delete 全文索引中的文档(只要您提交事务)。 Hibernate Search 将允许您构建全文查询(全文世界),并将结果检索为托管实体(JPA 世界)。 据我了解,Spring-Data-Elasticsearch 专注于访问 Elasticsearch,没有任何 JPA 集成。也就是说,可以使用Spring-Data-JPA,也可以使用Spring-Data-Elasticsearch,但是它们之间不会通信。您将有两个单独的模型,您将分别对其进行更新和查询。
其他一些元素:
如果不需要分布式索引,Hibernate Search 可以在嵌入式 Lucene 模式下 运行,无需所有 Elasticsearch 堆栈。它可能会更轻巧。 由于抽象层的原因,在自定义 Elasticsearch 映射或使用高级 Elasticsearch 功能时,Hibernate Search 目前不是很灵活。不过,这种情况在未来会有所改变(Hibernate Search 6)。 Spring-Data-HibernateSearch 模块正在开发中,可以从两全其美中获益。它尚未发布,也没有很好的记录,但是:https://github.com/snowdrop/spring-boot-hibernate-search-booster