We're updating the issue view to help you get more done. 

Move index-specific configuration properties below the hibernate.search.backends.<backend name>.indexes property

Description

Suggested by

Instead of having this:

1 2 3 4 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:

1 2 3 4 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:

1 2 3 4 5 6 7 8 9 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:

1 2 3 4 5 6 7 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:

1 2 3 4 @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.

Environment

None

Status

Assignee

Yoann Rodière

Reporter

Yoann Rodière

Labels

None

Suitable for new contributors

None

Feedback Requested

None

Components

Fix versions

Priority

Major