【问题标题】:Spring data elastic search with Java high level rest client [closed]Spring数据弹性搜索与Java高级休息客户端[关闭]
【发布时间】:2018-08-16 18:39:55
【问题描述】:

我是弹性搜索的初学者,正在寻找将弹性搜索与 Spring boot 集成的最佳方法。

我不确定要使用以下哪个:-

  • Spring 数据弹性搜索

  • 开玩笑

  • Java 高级别的客户端

谢谢

【问题讨论】:

标签: spring elasticsearch


【解决方案1】:

这取决于你想如何与 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;

【讨论】:

  • 谢谢 Val,学习了很多之后,我打算使用 Java High-Level REST 客户端。但是我找不到如何将它与 Spring boot 集成的方法?
  • 我已经更新了答案
  • 嗨 Val,我又遇到了一个疑问,虽然 Java 高级别的客户端足够好,但客户端需要与 Elasticsearch 版本相同,并且不支持 Elasticsearch 5.x。 JESt 会支持所有与 Elastic 搜索版本无关的 ES 操作吗??
  • jest 是否支持所有操作无关紧要。你需要弄清楚的是 Jest 是否支持你需要的操作。通过查看他们的文档和源代码很容易找到。
  • 嗨 Val,我只想对数据进行索引,而与 ES 版本无关。我也尝试将 Java 高级别的客户端与 Spring 集成,但无法正确解决依赖关系。我什至尝试过 Logstash,但我的用例需要过滤需要从 Rabbitmq 获取消息的数据,过滤它并将其索引为 ES。您能否指导我找到更好的方法来执行此任务?感谢您的帮助和支持..
猜你喜欢
  • 2020-03-19
  • 2020-07-27
  • 2019-07-13
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 2019-08-19
  • 2016-11-08
  • 1970-01-01
相关资源
最近更新 更多