我参考了 Spring Data Elasticsearch的
org.springframework.data.elasticsearch.repository.ElasticsearchRepository
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
它们似乎是两个不同的API,它们实现了相同的目标,但我不确定这两种类型之间的差异,更重要的是何时使用它们。
有人可以提供建议和指导吗?
答案 0 :(得分:7)
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是一个用于处理索引的弹性搜索客户端,它不是键入的,也不是与域类相关的。它更强大,因为您可以执行许多不可用于存储库实现的任务,例如删除索引或进行聚合搜索。