使用 ElasticSearch 启动 Spring 启动应用程序时出错



我想将 ElasticSearch 与 Spring Data 一起使用。我正在使用Spring 5,Spring Boot 2和ElasticSearch 7.4。Docker-compose:

version: '2.1'
services:
elasticsearch:
container_name: "elasticsearch"
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.0
volumes:
- ./docker-data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
ports:
- 9200:9200
- 9300:9300
expose:
- 9200
- 9300
environment:
- discovery.type=single-node
networks:
- elastic
kibana:
image: docker.elastic.co/kibana/kibana:7.4.2
container_name: kibana
volumes:
- ./docker-data/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro
ports:
- 5601:5601
networks:
- elastic
depends_on:
- elasticsearch

专家:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>

存储 库:

@Repository
public interface AddressElasticRepository extends ElasticsearchRepository<Address, String> {
}
@Data
@Document(indexName = "fias", type = "address")
public class Address {
@Id
private String id;
private String fullAddress;
}

配置:

import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
@Configuration
@EnableElasticsearchRepositories
public class Config {
@Bean
RestHighLevelClient elasticsearchClient() {
final ClientConfiguration configuration = ClientConfiguration.builder()
.connectedTo("localhost:9200")
.build();
return RestClients.create(configuration).rest();
}
@Bean
ElasticsearchRestTemplate elasticsearchTemplate() {
return new ElasticsearchRestTemplate(elasticsearchClient());
}
}

启动应用程序时出错:

原因:java.lang.NoSuchMethodError: org.springframework.http.HttpHeaders.(Lorg/springframework/util/MultiValueMap;(五

错误发生在 Config::elasticsearchClient方法的行中:.build((;

怎么了?

我的解决方案: 配置:

@Configuration
@EnableElasticsearchRepositories(queryLookupStrategy = QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND)
public class ElasticSearchConfig {
@Bean
RestHighLevelClient elasticsearchClient() {
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
new HttpHost("localhost", 9200, "http")
));
return client;
}
@Bean
ElasticsearchRestTemplate elasticsearchTemplate() {
return new ElasticsearchRestTemplate(elasticsearchClient());
}
}

maven(也许可以删除一些依赖项(:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>4.0.0.BUILD-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.1.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.4.0</version>
</dependency>

相关内容

最新更新