Spring 数据 Elasticsearch 的 ElasticsearchTemplate 与 ElasticsearchRepository
Spring Data Elasticsearch's ElasticsearchTemplate vs ElasticsearchRepository
我参考了 Spring Data Elasticsearch 的
org.springframework.data.elasticsearch.repository.ElasticsearchRepository
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
看起来它们是实现相同目标的两种不同的 API,但我不确定这两种类型之间有什么区别,更重要的是何时使用哪种。
有人可以提供建议和指导吗?
ElasticsearchRepository 旨在用作您域 classes 的存储库,因为它是键入的。它扩展了存储库的 Spring 接口,因此它可以用作其中之一。如果您习惯了 Spring 个存储库,您会觉得很舒服。
开始将对象索引到 Elasticsearch 所需要做的就是向它们添加 @Document 注释并创建一个扩展 ElasticsearchRepository 的 Repository 接口。
可索引class:
@Document(
indexName = "customers",
type = "customer",
shards = 1,
replicas = 0,
refreshInterval = "-1"
)
public class Customer {
@Id
private Long id;
private String name;
public Customer() {
}
public Customer(String name) {
this.name = name;
}
//Getters and setters omited
}
转载:
public interface CustomerRepository
extends ElasticsearchRepository<Customer, Long>{
}
有了它,您可以开箱即用地进行 CRUD 操作、索引、搜索和其他常见操作。
另一方面,ElasticsearchTemplate 是一个用于处理您的索引的 elasticsearch 客户端,它与您的域 classes 无关或无关。它更强大,因为您可以执行存储库实现无法执行的许多任务,例如删除索引或进行聚合搜索。
我参考了 Spring Data Elasticsearch 的
org.springframework.data.elasticsearch.repository.ElasticsearchRepository
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
看起来它们是实现相同目标的两种不同的 API,但我不确定这两种类型之间有什么区别,更重要的是何时使用哪种。
有人可以提供建议和指导吗?
ElasticsearchRepository 旨在用作您域 classes 的存储库,因为它是键入的。它扩展了存储库的 Spring 接口,因此它可以用作其中之一。如果您习惯了 Spring 个存储库,您会觉得很舒服。
开始将对象索引到 Elasticsearch 所需要做的就是向它们添加 @Document 注释并创建一个扩展 ElasticsearchRepository 的 Repository 接口。
可索引class:
@Document(
indexName = "customers",
type = "customer",
shards = 1,
replicas = 0,
refreshInterval = "-1"
)
public class Customer {
@Id
private Long id;
private String name;
public Customer() {
}
public Customer(String name) {
this.name = name;
}
//Getters and setters omited
}
转载:
public interface CustomerRepository
extends ElasticsearchRepository<Customer, Long>{
}
有了它,您可以开箱即用地进行 CRUD 操作、索引、搜索和其他常见操作。
另一方面,ElasticsearchTemplate 是一个用于处理您的索引的 elasticsearch 客户端,它与您的域 classes 无关或无关。它更强大,因为您可以执行存储库实现无法执行的许多任务,例如删除索引或进行聚合搜索。