Skip to content

Commit

Permalink
Merge pull request #11938 from yrodiere/hsearch6beta10
Browse files Browse the repository at this point in the history
Upgrade to Hibernate Search 6.0.0.Beta10
  • Loading branch information
gsmet authored Sep 7, 2020
2 parents 8b4b2a2 + e0a4e1b commit c1920d9
Show file tree
Hide file tree
Showing 8 changed files with 89 additions and 27 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci-actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -632,7 +632,7 @@ jobs:
run: |
docker run --rm --publish 9200:9200 --name build-elasticsearch \
-e discovery.type=single-node \
-d docker.elastic.co/elasticsearch/elasticsearch-oss:7.8.0
-d docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.0
if: matrix.elasticsearch
- uses: actions/checkout@v2
- name: Set up JDK 11
Expand Down
4 changes: 2 additions & 2 deletions bom/application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@
<hibernate-orm.version>5.4.21.Final</hibernate-orm.version>
<hibernate-reactive.version>1.0.0.Alpha9</hibernate-reactive.version>
<hibernate-validator.version>6.1.5.Final</hibernate-validator.version>
<hibernate-search.version>6.0.0.Beta9</hibernate-search.version>
<hibernate-search.version>6.0.0.Beta10</hibernate-search.version>
<narayana.version>5.10.5.Final</narayana.version>
<jboss-transaction-api_1.2_spec.version>1.1.1.Final</jboss-transaction-api_1.2_spec.version>
<agroal.version>1.8</agroal.version>
<jboss-transaction-spi.version>7.6.0.Final</jboss-transaction-spi.version>
<elasticsearch-rest-client.version>7.8.0</elasticsearch-rest-client.version>
<elasticsearch-rest-client.version>7.9.0</elasticsearch-rest-client.version>
<rxjava1.version>1.3.8</rxjava1.version>
<rxjava.version>2.2.19</rxjava.version>
<wildfly.openssl.version>1.0.6.Final</wildfly.openssl.version>
Expand Down
2 changes: 1 addition & 1 deletion build-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
<antlr.version>4.7.2</antlr.version>

<!-- Defaults for integration tests -->
<elasticsearch-server.version>7.8.0</elasticsearch-server.version>
<elasticsearch-server.version>7.9.0</elasticsearch-server.version>
<elasticsearch.image>docker.elastic.co/elasticsearch/elasticsearch-oss:${elasticsearch-server.version}</elasticsearch.image>
<elasticsearch.protocol>http</elasticsearch.protocol>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,17 @@ private static void checkConfig(HibernateSearchElasticsearchBuildTimeConfig buil
private void registerReflection(IndexView index, BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
Set<DotName> reflectiveClassCollector = new HashSet<>();

if (buildTimeConfig.defaultBackend.analysis.configurer.isPresent()) {
if (buildTimeConfig.defaultBackend.indexDefaults.analysis.configurer.isPresent()) {
reflectiveClass.produce(
new ReflectiveClassBuildItem(true, false, buildTimeConfig.defaultBackend.analysis.configurer.get()));
new ReflectiveClassBuildItem(true, false,
buildTimeConfig.defaultBackend.indexDefaults.analysis.configurer.get()));
}
for (HibernateSearchElasticsearchBuildTimeConfig.ElasticsearchIndexBuildTimeConfig indexConfig : buildTimeConfig.defaultBackend.indexes
.values()) {
if (indexConfig.analysis.configurer.isPresent()) {
reflectiveClass.produce(
new ReflectiveClassBuildItem(true, false, indexConfig.analysis.configurer.get()));
}
}

if (buildTimeConfig.defaultBackend.layout.strategy.isPresent()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,32 @@ public static class ElasticsearchBackendBuildTimeConfig {
public Optional<ElasticsearchVersion> version;

/**
* Configuration for full-text analysis.
* Configuration for the index layout.
*/
@ConfigItem
public AnalysisConfig analysis;
public LayoutConfig layout;

/**
* Configuration for the index layout.
* The default configuration for the Elasticsearch indexes.
*/
@ConfigItem(name = ConfigItem.PARENT)
public ElasticsearchIndexBuildTimeConfig indexDefaults;

/**
* Per-index specific configuration.
*/
@ConfigItem
public LayoutConfig layout;
@ConfigDocMapKey("index-name")
public Map<String, ElasticsearchIndexBuildTimeConfig> indexes;
}

@ConfigGroup
public static class ElasticsearchIndexBuildTimeConfig {
/**
* Configuration for full-text analysis.
*/
@ConfigItem
public AnalysisConfig analysis;
}

@ConfigGroup
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@
import io.quarkus.hibernate.orm.runtime.integration.HibernateOrmIntegrationListener;
import io.quarkus.hibernate.orm.runtime.integration.HibernateOrmIntegrations;
import io.quarkus.hibernate.search.elasticsearch.runtime.HibernateSearchElasticsearchBuildTimeConfig.ElasticsearchBackendBuildTimeConfig;
import io.quarkus.hibernate.search.elasticsearch.runtime.HibernateSearchElasticsearchBuildTimeConfig.ElasticsearchIndexBuildTimeConfig;
import io.quarkus.hibernate.search.elasticsearch.runtime.HibernateSearchElasticsearchRuntimeConfig.ElasticsearchBackendRuntimeConfig;
import io.quarkus.hibernate.search.elasticsearch.runtime.HibernateSearchElasticsearchRuntimeConfig.ElasticsearchIndexConfig;
import io.quarkus.hibernate.search.elasticsearch.runtime.HibernateSearchElasticsearchRuntimeConfig.ElasticsearchIndexRuntimeConfig;
import io.quarkus.runtime.annotations.Recorder;

@Recorder
Expand Down Expand Up @@ -103,14 +104,22 @@ private void contributeBackendBuildTimeProperties(BiConsumer<String, Object> pro
ElasticsearchBackendSettings.TYPE_NAME);
addBackendConfig(propertyCollector, backendName, ElasticsearchBackendSettings.VERSION,
elasticsearchBackendConfig.version);
addBackendConfig(propertyCollector, backendName,
ElasticsearchBackendSettings.ANALYSIS_CONFIGURER,
elasticsearchBackendConfig.analysis.configurer,
Optional::isPresent, c -> c.get().getName());
addBackendConfig(propertyCollector, backendName,
ElasticsearchBackendSettings.LAYOUT_STRATEGY,
elasticsearchBackendConfig.layout.strategy,
Optional::isPresent, c -> c.get().getName());

// Index defaults at the backend level
contributeBackendIndexBuildTimeProperties(propertyCollector, backendName, null,
elasticsearchBackendConfig.indexDefaults);

// Per-index properties
for (Entry<String, ElasticsearchIndexBuildTimeConfig> indexConfigEntry : elasticsearchBackendConfig.indexes
.entrySet()) {
String indexName = indexConfigEntry.getKey();
ElasticsearchIndexBuildTimeConfig indexConfig = indexConfigEntry.getValue();
contributeBackendIndexBuildTimeProperties(propertyCollector, backendName, indexName, indexConfig);
}
}

private void contributeBackendRuntimeProperties(BiConsumer<String, Object> propertyCollector, String backendName,
Expand All @@ -125,6 +134,10 @@ private void contributeBackendRuntimeProperties(BiConsumer<String, Object> prope
elasticsearchBackendConfig.password);
addBackendConfig(propertyCollector, backendName, ElasticsearchBackendSettings.CONNECTION_TIMEOUT,
elasticsearchBackendConfig.connectionTimeout.toMillis());
addBackendConfig(propertyCollector, backendName, ElasticsearchBackendSettings.READ_TIMEOUT,
elasticsearchBackendConfig.readTimeout.toMillis());
addBackendConfig(propertyCollector, backendName, ElasticsearchBackendSettings.REQUEST_TIMEOUT,
elasticsearchBackendConfig.requestTimeout, Optional::isPresent, d -> d.get().toMillis());
addBackendConfig(propertyCollector, backendName, ElasticsearchBackendSettings.MAX_CONNECTIONS,
elasticsearchBackendConfig.maxConnections);
addBackendConfig(propertyCollector, backendName, ElasticsearchBackendSettings.MAX_CONNECTIONS_PER_ROUTE,
Expand All @@ -143,15 +156,25 @@ private void contributeBackendRuntimeProperties(BiConsumer<String, Object> prope
contributeBackendIndexRuntimeProperties(propertyCollector, backendName, null,
elasticsearchBackendConfig.indexDefaults);

for (Entry<String, ElasticsearchIndexConfig> indexConfigEntry : runtimeConfig.defaultBackend.indexes.entrySet()) {
// Per-index properties
for (Entry<String, ElasticsearchIndexRuntimeConfig> indexConfigEntry : runtimeConfig.defaultBackend.indexes
.entrySet()) {
String indexName = indexConfigEntry.getKey();
ElasticsearchIndexConfig indexConfig = indexConfigEntry.getValue();
ElasticsearchIndexRuntimeConfig indexConfig = indexConfigEntry.getValue();
contributeBackendIndexRuntimeProperties(propertyCollector, backendName, indexName, indexConfig);
}
}

private void contributeBackendIndexBuildTimeProperties(BiConsumer<String, Object> propertyCollector,
String backendName, String indexName, ElasticsearchIndexBuildTimeConfig indexConfig) {
addBackendIndexConfig(propertyCollector, backendName, indexName,
ElasticsearchBackendSettings.ANALYSIS_CONFIGURER,
indexConfig.analysis.configurer,
Optional::isPresent, c -> c.get().getName());
}

private void contributeBackendIndexRuntimeProperties(BiConsumer<String, Object> propertyCollector,
String backendName, String indexName, ElasticsearchIndexConfig indexConfig) {
String backendName, String indexName, ElasticsearchIndexRuntimeConfig indexConfig) {
addBackendIndexConfig(propertyCollector, backendName, indexName,
ElasticsearchIndexSettings.SCHEMA_MANAGEMENT_MINIMAL_REQUIRED_STATUS,
indexConfig.schemaManagement.requiredStatus);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,26 @@ public static class ElasticsearchBackendRuntimeConfig {
Optional<String> password;

/**
* The connection timeout.
* The timeout when establishing a connection to an Elasticsearch server.
*/
@ConfigItem(defaultValue = "3S")
@ConfigItem(defaultValue = "1S")
Duration connectionTimeout;

/**
* The timeout when reading responses from an Elasticsearch server.
*/
@ConfigItem(defaultValue = "30S")
Duration readTimeout;

/**
* The timeout when executing a request to an Elasticsearch server.
* <p>
* This includes the time needed to wait for a connection to be available,
* send the request and read the response.
*/
@ConfigItem
Optional<Duration> requestTimeout;

/**
* The maximum number of connections to all the Elasticsearch servers.
*/
Expand Down Expand Up @@ -129,14 +144,14 @@ public static class ElasticsearchBackendRuntimeConfig {
* The default configuration for the Elasticsearch indexes.
*/
@ConfigItem(name = ConfigItem.PARENT)
ElasticsearchIndexConfig indexDefaults;
ElasticsearchIndexRuntimeConfig indexDefaults;

/**
* Per-index specific configuration.
*/
@ConfigItem
@ConfigDocMapKey("index-name")
Map<String, ElasticsearchIndexConfig> indexes;
Map<String, ElasticsearchIndexRuntimeConfig> indexes;
}

public enum ElasticsearchClientProtocol {
Expand Down Expand Up @@ -174,7 +189,7 @@ public String getHibernateSearchString() {
}

@ConfigGroup
public static class ElasticsearchIndexConfig {
public static class ElasticsearchIndexRuntimeConfig {
/**
* Configuration for the schema management of the indexes.
*/
Expand Down Expand Up @@ -374,7 +389,7 @@ public static class ElasticsearchIndexIndexingConfig {
* which may lead to higher indexing throughput,
* but incurs a risk of overloading Elasticsearch,
* i.e. of overflowing its HTTP request buffers and tripping
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.8/circuit-breaker.html">circuit breakers</a>,
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.9/circuit-breaker.html">circuit breakers</a>,
* leading to Elasticsearch giving up on some request and resulting in indexing failures.
*/
// We can't set an actual default value here: see comment on this class.
Expand All @@ -400,7 +415,7 @@ public static class ElasticsearchIndexIndexingConfig {
* which may lead to higher indexing throughput,
* but incurs a risk of overloading Elasticsearch,
* i.e. of overflowing its HTTP request buffers and tripping
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.8/circuit-breaker.html">circuit breakers</a>,
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.9/circuit-breaker.html">circuit breakers</a>,
* leading to Elasticsearch giving up on some request and resulting in indexing failures.
* <p>
* Note that raising this number above the queue size has no effect,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import javax.persistence.Id;
import javax.persistence.ManyToOne;

import org.hibernate.search.engine.backend.document.model.dsl.ObjectFieldStorage;
import org.hibernate.search.engine.backend.types.ObjectStructure;
import org.hibernate.search.engine.backend.types.Sortable;
import org.hibernate.search.mapper.pojo.mapping.definition.annotation.FullTextField;
import org.hibernate.search.mapper.pojo.mapping.definition.annotation.Indexed;
Expand All @@ -28,7 +28,7 @@ public class Person {
private String name;

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@IndexedEmbedded(storage = ObjectFieldStorage.NESTED)
@IndexedEmbedded(structure = ObjectStructure.NESTED)
private Address address;

public Person() {
Expand Down

0 comments on commit c1920d9

Please sign in to comment.