We just published a second candidate release for Hibernate Search 6.0: version 6.0.0.CR2.
This release mainly brings a workaround for applications hanging on startup with Spring Boot 2.3+, type parameters for type bridges and property bridges, and an alternative, URI-based configuration for target Elasticsearch hosts.
It also includes an upgrade to Lucene 8.7.0, Elasticsearch 7.10.0 and Hibernate ORM 5.4.24.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.
If you want to migrate an application based on Hibernate Search 5, be aware that Hibernate Search 6 APIs differ significantly from Hibernate Search 5. We recommend you have a look at see the migration guide.
Reporting bugs
While this version has been tested extensively, and we don’t anticipate any particular problem, the goal of this candidate release is to catch as many bugs as possible before the final release.
If you happen to encounter problems, please contact us:
-
When you’re unsure whether it’s a usage issue or a bug, ask questions on Stack Overflow with the
hibernate-search
tag or on our forums in the "Hibernate Search" category. -
When you’re clearly facing a bug, report it on JIRA.
-
For more communication channels, see here.
What’s new compared to Hibernate Search 5
For an overview of new features and improvements in Hibernate Search 6, see here.
What’s new compared to Hibernate Search 6.0.0.CR1
Workaround for Spring’s hang-on-startup bug
A bug in Spring may cause your application to hang on bootstrap if it relies on custom beans, unless you add specific configuration. This affects Spring Boot 2.3.0 and above.
As of HSEARCH-4096, Hibernate Search will only look for Spring beans when it cannot resolve a bean reference to a built-in bean. This means that an application that does not rely on custom beans will not be affected by Spring’s hang-on-startup bug.
Additionally, bean references in configuration properties
can now use a prefix in order to specify how the bean is to be retrieved.
A bean reference such as constructor:com.mycompany.MyBean
, for example,
will always bypass Spring and use reflection to instantiate the bean,
thereby avoiding Spring’s hang-on-startup bug.
The bean won’t be able to rely on @Autowired
or other Spring features, however.
If you really need to use Spring beans in Hibernate Search components,
until the Spring project resolves this deadlock, the best workaround is to set the property
spring.data.jpa.repositories.bootstrap-mode
to deferred
in your application.properties
/application.yaml
.
Type parameters for TypeBridge
/PropertyBridge
As of HSEARCH-4088,
TypeBridge
is now TypeBridge<T>
and PropertyBridge
is now PropertyBridge<P>
.
The new type parameter represents the expected type of bridged elements.
It allows for easier detection of incorrectly applied bridges.
See the updated documentation for more information.
Existing bridges implementing the raw TypeBridge
/PropertyBridge
types will continue to work without any change.
Configuring URIs instead of hosts
As of HSEARCH-4099, the target Elasticsearch cluster can alternatively be configured using URIs, for example:
hibernate.search.backend.uris = https://es1.mycompany.com:9200,https://es2.mycompany.com:9200
The host-based configuration can still be used, but not at the same time as URI-based configuration:
hibernate.search.backend.hosts = es1.mycompany.com:9200,es2.mycompany.com:9200
hibernate.search.backend.protocol = https
Version upgrades
-
HSEARCH-4098: Upgrade to Lucene 8.7.0
-
HSEARCH-4104: Upgrade to Elasticsearch 7.10.0
-
HSEARCH-4111: Upgrade to Hibernate ORM 5.4.24.Final
Hibernate Search 6 requires ORM 5.4.4.Final or later to work correctly. Earlier 5.4.x versions will lead to potentially cryptic runtime exceptions. |
Breaking changes
-
HSEARCH-4096: Bean references in configuration properties (e.g. for an analysis configurer) are now parsed. Attempting to reference a bean whose name contains a colon (e.g.
my.company:analysis:configurer
) will lead to an exception on bootstrap. To work around that, prefix the bean name with the bean resolution mode, for examplebean:my.company:analysis:configurer
. See here for more information. -
HSEARCH-4100: Queries and requests are now logged at the
TRACE
level. -
HSEARCH-4101: The default required status for Elasticsearch indexes is now
yellow
.
Documentation
-
HSEARCH-4067: Configuration examples no longer include confusing comments (such as
(default)
). -
HSEARCH-4074: It should be clearer which type of bridge to chose, depending on the use case.
-
HSEARCH-4094: The documentation of the JSR-352 integration now clearly mentions that an additional dependency is necessary.
-
HSEARCH-4113: Documented a limitation regarding the serialization of an ORM
Session
.
Other improvements and bug fixes
-
HSEARCH-4102: When using Elasticsearch, the
no-alias
layout strategy can now be selected in order to avoid index aliases altogether. This is mainly useful on legacy applications. -
HSEARCH-4069:
SearchResult.took()
is now more accurate with the Lucene backend. -
HSEARCH-4107: With Spring Boot 2.4+, the methods
Search.getFullTextEntityManager(…)
/Search.getFullTextSession(…)
of the Search 5 migration helper will no longer throw aClassCastException
. -
HSEARCH-4108: The
SearchSession
returned bySearch.session(…)
can now be used from multiple threads if theEntityManager
/Session
is thread-safe. Typically, that’s the case for anEntityManager
/Session
injected by CDI or Spring into a transactional bean. -
HSEARCH-4112: Hibernate Search will no longer fail to index entities when using Spring with JTA enabled.
-
HSEARCH-4116: Empty, blank or null configuration properties will now be ignored when detecting unused properties.
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)