【发布时间】:2018-08-16 18:39:55
【问题描述】:
我是弹性搜索的初学者,正在寻找将弹性搜索与 Spring boot 集成的最佳方法。
我不确定要使用以下哪个:-
Spring 数据弹性搜索
开玩笑
- Java 高级别的客户端
谢谢
【问题讨论】:
标签: spring elasticsearch
我是弹性搜索的初学者,正在寻找将弹性搜索与 Spring boot 集成的最佳方法。
我不确定要使用以下哪个:-
Spring 数据弹性搜索
开玩笑
谢谢
【问题讨论】:
标签: spring elasticsearch
这取决于你想如何与 ES 交互。
如果您想在 Elasticsearch 之上使用 ORM 对文档执行 CRUD 操作,那么 Spring Data Elasticsearch 是您的最佳选择。但请注意,Spring Data ES 落后于最新的 ES 版本,因此根据您的 ES 版本,集成 Spring Data ES(通过 Spring Boot)可能会更加困难。
另外两个是更通用的客户端,可以让你用 ES 做几乎任何事情。
JEST 是一个不错的选择,并且长期以来一直是我的最爱之一,因为 Elasticsearch 缺乏真正好的 REST 客户端。
随着 Elastic 投入更多精力(因为传输客户端正在消失),Java 高级 REST 客户端的吸引力越来越大。这个最大的优点是它是 Elastic 支持的官方 REST 客户端,并且提供了与请求/响应 DSL 的良好集成,而 JEST 没有。
更新
要将 REST 客户端与 Spring Boot 集成,您可以像任何其他依赖项一样执行此操作,像这样,创建一个配置 bean,然后在需要的地方自动装配依赖项:
/** Configuration Bean */
@Configuration
public class ElasticsearchConfig {
@Value("${elasticsearch.host}")
private String host;
@Value("${elasticsearch.port}")
private int port;
@Bean
public RestClient restClient() {
return RestClient.builder(new HttpHost(host, port)).build();
}
}
// use the dependency in your other components/services, using dependency injection
@Autowired
private RestClient restClient;
【讨论】: