为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

DIEA 2021-06-09 14:15:39
我们正在使用 Hibernate Search(Lucene 引擎)来启用对文本的模糊搜索,我们存储在 SQL Server 数据库中并由用 Java 8 编写的搜索服务使用的一些数据。搜索的数据源是一个具有中等编辑/更新频率的表. 我们需要的是,对于重建索引时所做的任何更改,我们希望确保搜索功能仍在运行且可访问,而不是被正在构建的索引过程锁定。简而言之,如何在构建新索引时临时使用现有索引并在完成时替换它。
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

不是您问题的答案,但无论如何都可以帮助您:根据我在您的评论中的理解,您实际上并不需要完全重建索引,您只需要从与执行该应用程序的应用程序不同的位置获取更新事件搜索查询。

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

后者可以通过以下任一方式实现:

  • 通过使用实验性Elasticsearch 集成并将两个应用程序连接到同一个集群:一个将更新它,另一个将使用它进行搜索。

  • 或者通过使用 Lucene 与filesystem-master/filesystem-slave 目录提供程序的集成,这将允许您定期(并且无需停机)将索引从“更新”应用程序(主)复制到“搜索”应用程序(从)。请注意,如果多个应用程序更新索引,您将需要使用JMS 或 JGroups 后端将所有索引更新重定向到主节点并避免冲突。请注意,配置 JMS 或 JGroups 不会很明显。


查看完整回答
反对 回复 2021-06-23
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信