bal*_*teo 7 elasticsearch spring-data-elasticsearch
我参考了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
}
Run Code Online (Sandbox Code Playgroud)
转发:
public interface CustomerRepository
extends ElasticsearchRepository<Customer, Long>{
}
Run Code Online (Sandbox Code Playgroud)
有了这个,您可以开箱即用,进行CRUD操作,索引,搜索和其他常见操作.
另一方面,ElasticsearchTemplate是一个用于处理索引的弹性搜索客户端,它不是键入的,也不是与域类相关的.它更强大,因为您可以执行许多不可用于存储库实现的任务,例如删除索引或进行聚合搜索.