在解决60多个任务之后,我们自豪地发布了 Hibernate Search 5.6.0.Beta1 版本。
Elasticsearch 集成取得了重大进展,我们相信它已准备好更广泛的使用。
Elasticsearch 集成进展
与前一个里程碑相比的改进
- MassIndexer
-
由于现在使用批量操作,性能显著提高。
- 日历、日期、数字和映射细节
-
进行了多项修正和改进,以生成更干净的架构。
- 集群状态
-
我们现在在开始使用之前会等待一个新的 Elasticsearch 集群变为“绿色” - 或者可选的“黄色”。
- WildFly 模块
-
解决了一个关键错误,模块现在应该能正常工作。
- 许多更多
-
要查看所有 63 项改进的完整列表,请参阅 此 JIRA 查询。
还缺少什么?
- 性能测试
-
我们没有进行太多的性能测试,它可能没有预期的那么高效。
- 放宽预期的 Elasticsearch 版本
-
它正在与版本 2.3.1 进行测试,但我们有计划支持更广泛的版本。
- 显式刷新请求
-
我们计划添加方法来发出索引读取器刷新请求,因为默认情况下推送到 Elasticsearch 的更改不可见。
- 您的反馈!
-
我们认为它处于非常好的状态,更多的人尝试它并将反馈给我们缺失的内容以及它是如何为您工作的将会非常棒。
使用嵌入式Lucene与Elasticsearch之间的显著差异
除非您重新配置Hibernate Search以使用异步工作进程,否则默认情况下,在使用Lucene后端并在提交事务后,索引的更改将立即应用,任何随后的搜索都将“看到”这些更改。在Elasticsearch上,默认设置不同:接收到的集群更改只有在几秒钟后(默认为1秒)才对搜索“可见”。
您可以通过使用配置设置 hibernate.search.default.elasticsearch.refresh_after_write
来重新配置Hibernate Search,以强制在每个写入操作后刷新索引。
此设置默认为 false
,因为这是在Elasticsearch上获得最佳性能的建议设置。您可能想将其设置为 true
以简化单元测试,但您应该注意不要在生产代码上依赖于同步行为。
嵌入式Lucene用户改进
在开发Elasticsearch的同时,我们还实施了一些性能改进,这些改进适用于传统Lucene嵌入式用户。
特别感谢Andrei Golovnin,他为减少热点路径上的对象分配并提高整体性能贡献了几个补丁。
反馈
欢迎反馈!
我们还在监控Stack Overflow;在SO上发布时,请使用标签hibernate-search
。