2 回答
TA贡献1865条经验 获得超7个赞
一如既往,这取决于。
关于 Elasticsearch:当前版本是 6.7.0,TransportClient 也将在 ES7 中可用,虽然已弃用但只会在 ES8 中删除,因此使用它有相当长的时间 - 尽管您应该考虑更换它。
关于 spring-data-elasticsearch:
使用时
ElasticsearchTemplate
,您使用的是 TransportClient。使用时,
ElasticsearchRestTemplate
您使用的是 RestClient(在 3.2.0 中可用)。使用默认值时,
ElasticsearchRepository
您使用的是 TransportClient。当使用扩展的自定义存储库时,例如
SimpleElasticsearchRepository
如下所示,您正在使用 RestClient。
示例配置类:
@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 时,您只有 TransportClient,而 3.2.x 目前可用作里程碑 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>
添加回答
举报