Fixed
Details
Assignee
Yoann RodièreYoann RodièreReporter
Yoann RodièreYoann RodièreComponents
Sprint
NoneFix versions
Priority
Major
Details
Details
Assignee
Yoann Rodière
Yoann RodièreReporter
Yoann Rodière
Yoann RodièreComponents
Sprint
None
Fix versions
Priority
Created March 18, 2019 at 1:06 PM
Updated April 4, 2019 at 9:41 AM
Resolved March 27, 2019 at 7:15 AM
Suggested by @Guillaume Smet
Instead of having this:
hibernate.search.default_backend es hibernate.search.backends.es.type elasticsearch hibernate.search.backends.es.index_defaults.foo bar hibernate.search.indexes.Book.foo bar2
We would have this:
hibernate.search.default_backend es hibernate.search.backends.es.type elasticsearch hibernate.search.backends.es.index_defaults.foo bar hibernate.search.backends.es.indexes.Book.foo bar2
Which makes more sense, since the options available to configure the index "Book" actually depend on the backend in which this index is defined.
As a bonus it also feels more "tidy" since the index properties are nested under the right backend. It's particularly visible in a YAML configuration, like in Spring Boot:
spring.jpa.properties: hibernate.search: default_backend: es backends.es: type: elasticsearch index_defaults: foo: bar indexes.Book: foo: bar2
However, in order for this to be possible, we will need to change how we configure an index to point to a certain backend. Currently this is done in the configuration:
hibernate.search.backends.es.type elasticsearch hibernate.search.backends.lucene.type lucene hibernate.search.default_backend es # Override the default hibernate.search.indexes.Book.backend lucene
Which obviously makes no sense if the index properties are nested under the backend name.
One solution would be to configure the targeted backend in the mapper:
@Indexed(backend = "lucene") // New attribute public class Book { ... }
The default (when the "backend" attribute is not defined) being to rely on
hibernate.search.default_backend
.