gpt4 book ai didi

java - 异步构建 Hibernate Search 索引以确保不会停机。

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:53 25 4
gpt4 key购买 nike

我们正在使用 Hibernate Search(Lucene 引擎)对我们存储在 SQL Server 数据库中并由用 Java 8 编写的搜索服务使用的一些数据启用文本模糊搜索。搜索的数据源是一个具有适度编辑的表/更新频率。我们需要的是,对于重建索引时所做的任何更改,我们希望确保搜索功能仍在运行且可访问,而不是被正在构建索引的过程锁定。

简而言之,如何在构建新索引时临时使用现有索引并在完成时替换它。

最佳答案

不是你问题的答案,但无论如何这对你有帮助:根据我在你的评论中的理解,你并不需要完全重建索​​引,你只需要从不同于执行搜索查询的应用程序。

如果您的“更新”应用程序使用 Hibernate ORM,您可以在不完全重建索​​引的情况下解决问题:在“更新”应用程序中自动和增量地构建索引(使用 "automatic indexing" mode 中的 Hibernate 搜索而不进行任何查询) ,并确保该索引可用于“搜索”应用程序。

后者可以实现:

  • 通过使用实验 Elasticsearch integration并将两个应用程序连接到同一个集群:一个将更新它,另一个将使用它进行搜索。
  • 或者通过使用 Lucene 与 filesystem-master/filesystem-slave 的集成 directory providers ,这将允许您定期(无需停机)将索引从“更新”应用程序(主)复制到“搜索”应用程序(从)。请注意,如果多个应用程序更新索引,您将需要使用 JMS or JGroups backend将所有索引更新重定向到主节点并避免冲突。当心,配置 JMS 或 JGroups 不会很明显。

关于java - 异步构建 Hibernate Search 索引以确保不会停机。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51641688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com