Spring 数据 Elasticsearch 的 ElasticsearchTemplate 与 ElasticsearchRepository

Spring Data Elasticsearch's ElasticsearchTemplate vs ElasticsearchRepository

我参考了 Spring Data Elasticsearch 的

看起来它们是实现相同目标的两种不同的 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 无关或无关。它更强大,因为您可以执行存储库实现无法执行的许多任务,例如删除索引或进行聚合搜索。