我想在项目中使用Spring Data Elasticsearch,并且看到了以下内容:
从Elasticsearch 7.0.0开始不推荐使用众所周知的TransportClient,并且应该在Elasticsearch 8.0中将其删除。
我的方法是仅使用Spring Data Elasticsearch进行CRUD操作(类似ORM),并使用High Level REST Client进行搜索,其余的都使用。所以我想知道ElasticsearchRepository使用哪个客户端执行其操作,以及该代码在Elasticsearch 8.0版中是否将不再有效。 使用版本3.1.5是否仍然是一个好的决定?
与往常一样,这取决于。
关于Elasticsearch:当前版本为6.7.0,虽然已弃用TransportClient,但ES7也将提供该功能,但仅在ES8中将被删除,因此有很多时间可以使用它- 尽管您应该考虑替换它。
关于spring-data-elasticsearch:
ElasticsearchTemplate
ElasticsearchRestTemplate
ElasticsearchRepository
SimpleElasticsearchRepository
示例配置类 :
@SpringBootApplication @EnableElasticsearchRepositories public class SpringdataElasticTestApplication { public static void main(String[] args) { SpringApplication.run(SpringdataElasticTestApplication.class, args); } @Bean RestHighLevelClient elasticsearchClient() { final ClientConfiguration configuration = ClientConfiguration.localhost(); RestHighLevelClient client = RestClients.create(configuration).rest(); return client; } @Bean ElasticsearchRestTemplate elasticsearchTemplate() { return new ElasticsearchRestTemplate(elasticsearchClient()); } }
样本存储库类:
public interface PersonRepository extends ElasticsearchRepository<Person, Long> { }
样本POJO类:
@Document(indexName = "person") public class Person { @Id private Long id; private String lastName; private String firstName; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } }
因此,在使用3.1.x时,只有具有3.2.x的TransportClient(当前可作为里程碑M2使用),也可以使用RestClient。
确保您的application.yaml(或.properties)没有任何 spring.data.elasticsearch.cluster- * 属性,因为这些属性将注入ElasticsearchTemplate(传输客户端)。
而且,您将需要在pom(摘录)中设置正确的elasticsearch版本和spring-data-elasticsearch版本:
<properties> <elasticsearch.version>6.6.1</elasticsearch.version> </properties> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> <!-- need 3.2.0 for REST client--> <version>3.2.0.M2</version> </dependency> <repository> <id>Spring-Framework-Milestone</id> <name>Spring Framework Milestone</name> <url>http://maven.springframework.org/milestone/</url> </repository>