使用Java高级REST客户端的Spring Data ElasticSearch

5

我是Elasticsearch的初学者,正在寻找最佳方法将Elasticsearch与Spring Boot集成。

我不确定应该使用以下哪种方式:

  • Spring Data Elasticsearch

  • JEST

  • Java High Level REST Client

谢谢。


请查看 https://github.com/VanRoy/spring-data-jest。 - Kalpesh Soni
1个回答

8
这取决于您希望如何与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 高级 REST 客户端。但是我无法找到如何将其与 Spring Boot 集成的方法,不知道该怎么做? - Puja Barad
我已经更新了我的回答。 - Val
嗨 Val,我有另一个疑问,虽然Java高级rest客户端已经足够好了,但是客户端需要与Elasticsearch版本相同,并且不支持Elasticsearch 5.x。 JESt是否支持所有与Elasticsearch版本无关的ES操作? - Puja Barad
无论jest是否支持所有操作都不重要。你需要弄清楚的是Jest是否支持你所需的操作。通过查看他们的文档和源代码很容易找到答案。 - Val
嗨Val,我想只对数据进行索引,而不考虑ES版本。我已经尝试将Java高级rest客户端与Spring集成,但无法正确解决依赖关系。 我甚至尝试了Logstash,但我的用例需要过滤数据,我需要从Rabbitmq获取消息并将其过滤后索引到ES中。 您能否指导我找到更好的执行此任务的方法??感谢您的帮助和支持。 - Puja Barad
@PujaBarad 你能解决这个问题吗? - nitin tyagi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接