我指的是Spring Data Elasticsearch
org.springframework.data.elasticsearch.repository.ElasticsearchRepository
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
似乎它们是实现相同目标的两种不同 API,但我不确定这两种类型之间有什么区别,更重要的是何时使用哪种类型。
有人可以提供建议和指导吗?
我指的是Spring Data Elasticsearch
org.springframework.data.elasticsearch.repository.ElasticsearchRepository
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
似乎它们是实现相同目标的两种不同 API,但我不确定这两种类型之间有什么区别,更重要的是何时使用哪种类型。
有人可以提供建议和指导吗?
ElasticsearchRepository 旨在用作域类的存储库,因为它是键入的。它为存储库扩展了 Spring 接口,因此它可以用作其中之一。如果你习惯了 Spring 存储库,你会觉得很舒服。
开始将对象索引到 Elasticsearch 所需要做的就是向它们添加 @Document 注释并创建一个扩展 ElasticsearchRepository 的 Repository 接口。
可索引类:
@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 是一个用于处理索引的弹性搜索客户端,它与您的域类没有类型或相关。它更强大,因为您可以执行存储库实现无法执行的许多任务,例如删除索引或进行聚合搜索。