Hibernate Search 6.0.0.Beta5 released

Posted by Yoann Rodière | Feb 24, 2020 Hibernate Search Lucene Elasticsearch Releases

We just published Hibernate Search 6.0.0.Beta5.

This release mainly changes the way the Elasticsearch backend accesses indexes, introduces delayed commits and near-real-time queries for the Lucene backend, and renames a few methods in the Search DSL. It also includes upgrades to Lucene 8.4, Elasticsearch 7.6 and Hibernate ORM 5.4.12.Final.
Getting started with Hibernate Search 6

If you want to dive right into the new, shiny Hibernate Search 6, a good starting point is the getting started guide included in the reference documentation.

Hibernate Search 6 APIs differ significantly from Search 5.

For more information about migration and what we intend to do to help you, see the migration guide.
What’s new
Aliases for Elasticsearch indexes

As of HSEARCH-3791, Elasticsearch indexes are now accessed through aliases only. Hibernate Search relies on two aliases for each index: one for writes (-write) and one for reads (-read).

This setup is a first step towards introducing, in a future version of Hibernate Search, a “zero-downtime” reindexing where search queries still return results while reindexing. See this section of the reference documentation for more information, in particular regarding how to change the name of the aliases.

As a result of this change, you will need to either:

manually create the two aliases for each index;

or drop your indexes and have Hibernate Search re-create empty indexes on startup: it will create the aliases. In this case, you will also need to reindex.

Delayed commits and near-real-time for the Lucene backend

As of HSEARCH-3775, the Lucene backend can now be configured to commit the writer or refresh the reader periodically (e.g. every second), instead of doing it as soon as possible.

This feature, which was already available but exposed differently in Search 5, can lead to substantial performance improvements. See this section of the documentation for details.
Fixed an indexing bug for nested documents in the Lucene backend

HSEARCH-3834 fixed a bug that caused nested documents to be left in the index indefinitely after their root document was deleted. This bug did not affect the results of search queries: the nested documents were not visible after deletion of the root document. However, this could lead to indexes taking more space than necessary.

In order to clean up your index, you should reindex.
More generic wording in the Search DSL

As of HSEARCH-3807, a few methods in the Search DSL have been renamed:

searchSession.search(…​).predicate(…​) becomes searchSession.search(…​).where(…​).

searchSession.search(…​).asProjection(…​) becomes searchSession.search(…​).select(…​).

searchSession.search(…​).asProjections(…​) becomes searchSession.search(…​).select(…​).

searchSession.search(…​).asEntity(…​) becomes searchSession.search(…​).selectEntity().

searchSession.search(…​).asEntityReference(…​) becomes searchSession.search(…​).selectEntityReference().

The methods with the old name are still present, though deprecated. They will be removed before Hibernate Search 6.0.0.Final is released.
Version upgrades

HSEARCH-3799: Upgrade to Lucene 8.4.1

HSEARCH-3829: Upgrade to Elasticsearch 7.6

HSEARCH-3830: Upgrade to Hibernate ORM 5.4.12.Final

Hibernate Search 6 requires ORM 5.4.4.Final or later to work correctly. Earlier 5.4.x versions will not work correctly.
Backward-incompatible changes

HSEARCH-3808: The names of synchronization strategies for automatic indexing have changed:

    queued ⇒ async.

    committed (the default) ⇒ write-sync (still the default).

    searchable (commonly used for tests) ⇒ sync (still recommended for tests only).

You will need to update the value of the property hibernate.search.automatic_indexing.synchronization.strategy in your configuration.

HSEARCH-3460: an explicit flush() no longer implicitly refreshes the index; you will need to use the new refresh() operation.

Full reindexing is necessary if you use the Lucene backend and take advantage of nested documents (@IndexedEmbedded(storage = NESTED)). See above for details.

Dropping and re-creating your indexes is necessary if you use the Elasticsearch backend. See above for details or workarounds.

Documentation

HSEARCH-3808: The documentation of automatic indexing synchronization strategies was improved and should now be clearer.

Other improvements and bug fixes

HSEARCH-3833: Writing on different local-heap indexes will provoke LockObtainFailedException

HSEARCH-3801: Hibernate Search blocks loading of non hibernate batch jobs

HSEARCH-3815: Stop publishing the mapper-javabean module

HSEARCH-3819: JsonSyntaxException when validating or migrating an Elasticsearch schema with a geo_point field with null_value

HSEARCH-3824: Automatically filter search results based on provided routing keys

HSEARCH-3825: Purging a document from the POJO mapper will lead to NPE

HSEARCH-3836: Allow explicit routing for purges

HSEARCH-3778: Remove "index_metadata_complete" configuration property

HSEARCH-3779: Remove automatic index optimization

HSEARCH-3826: Drop support for non-exclusive index use

HSEARCH-3831: Allow setting the automatic indexing sync strategy to a custom bean in configuration

And more. For a full list of changes since the previous releases, please see the release notes.
How to get this release

All details are available and up to date on the dedicated page on hibernate.org.
Feedback, issues, ideas?

To get in touch, use the following channels:

hibernate-search tag on Stackoverflow (usage questions)

User forum (usage questions, general feedback)

Issue tracker (bug reports, feature requests)

Mailing list (development-related discussions)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值