Spring Data Elasticsearch的ElasticsearchTemplate与ElasticsearchRepository

时间:2015-03-06 11:02:09

标签: elasticsearch spring-data-elasticsearch

我参考了 Spring Data Elasticsearch的

  • org.springframework.data.elasticsearch.repository.ElasticsearchRepository
  • org.springframework.data.elasticsearch.core.ElasticsearchTemplate

它们似乎是两个不同的API,它们实现了相同的目标,但我不确定这两种类型之间的差异,更重要的是何时使用它们。

有人可以提供建议和指导吗?

1 个答案:

答案 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是一个用于处理索引的弹性搜索客户端,它不是键入的,也不是与域类相关的。它更强大,因为您可以执行许多不可用于存储库实现的任务,例如删除索引或进行聚合搜索。