Error creating bean with name 'elasticsearchClient' defined in class path resource
[org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfiguration.class]:
Bean instantiation via factory method failed; nested exception is
org.springframework.beans.BeanInstantiationException: Failed to instantiate
[org.elasticsearch.client.Client]: Factory method 'elasticsearchClient' threw exception; nested
exception is java.lang.NoSuchMethodError:
org.elasticsearch.common.settings.Settings.settingsBuilder()Lorg/elasticsearch/common/settings/Set
tings$Builder;
Failed to instantiate [org.elasticsearch.client.Client]: Factory method 'elasticsearchClient'
threw exception; nested exception is java.lang.NoSuchMethodError:
org.elasticsearch.common.settings.Settings.settingsBuilder()Lorg/elasticsearch/common/settings/Se
ttings$Builder;
org.elasticsearch.common.settings.Settings.settingsBuilder()Lorg/elasticsearch/common
/settings/Settings$Builder
<!--springboot版本1.5.8-->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.5.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.5.0</version>
</dependency>
导致的原因
应该是SpringBoot版本太老问题
解决
去除掉
elasticsearch-rest-high-level-client
依赖,然后直接采用sdk
public class ElasticsearchConfig {
private static final Logger logger = LoggerFactory.getLogger(ElasticsearchConfig.class);
@Value("${elasticsearch.hostName}")
private String hostName ;
@Value("${elasticsearch.port}")
private Integer port ;
@Value("${elasticsearch.scheme}")
private String scheme ;
@Value("${elasticsearch.indexGroup}")
private String indexGroup ;
@Bean
public RestHighLevelClient restHighLevelClient(){
logger.info("{elasticsearch restHighLevelClient连接elsticsearch \n " +
"hostName: "+this.hostName + "\n " +
"port: "+this.port+ "\n " +
"scheme: "+this.scheme+ "\n " +
"indexGroup: "+this.indexGroup+ "\n " +
"}"
);
return new RestHighLevelClient(
RestClient.builder(
new HttpHost(hostName , port , scheme)
)
);
}
}