diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientConfigurations.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientConfigurations.java index 33faaa3ff038..df67bea254d1 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientConfigurations.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientConfigurations.java @@ -36,6 +36,7 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate; import org.springframework.boot.context.properties.PropertyMapper; import org.springframework.context.annotation.Bean; @@ -113,6 +114,7 @@ RestHighLevelClient elasticsearchRestHighLevelClient(RestClientBuilder restClien @Configuration(proxyBeanMethods = false) @ConditionalOnClass(Sniffer.class) @ConditionalOnSingleCandidate(RestHighLevelClient.class) + @ConditionalOnProperty(prefix = "spring.elasticsearch.rest.sniffer", name = "enabled", havingValue = "true", matchIfMissing = true) static class RestClientSnifferConfiguration { @Bean diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientProperties.java index 649246d42bbd..c51b73774c6e 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientProperties.java @@ -115,6 +115,11 @@ public static class Sniffer { */ private Duration delayAfterFailure = Duration.ofMinutes(1); + /** + * Whether to enable Sniffer support. + */ + private boolean enabled = true; + public Duration getInterval() { return this.interval; } @@ -131,6 +136,13 @@ public void setDelayAfterFailure(Duration delayAfterFailure) { this.delayAfterFailure = delayAfterFailure; } + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationTests.java index 8d5a55a613b5..d3fae480ff33 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationTests.java @@ -220,6 +220,13 @@ void configureWithoutSnifferLibraryShouldNotCreateSniffer() { .doesNotHaveBean(Sniffer.class)); } + @Test + void configureWithDisabledSnifferShouldNotCreateSniffer() { + this.contextRunner.withPropertyValues("spring.elasticsearch.rest.sniffer.enabled=false") + .run((context) -> assertThat(context).hasSingleBean(RestHighLevelClient.class) + .doesNotHaveBean(Sniffer.class)); + } + @Test void configureShouldCreateSnifferUsingRestHighLevelClient() { this.contextRunner.run((context) -> {