弹性搜索高/低休息客户端与春季休息模板

时间:2019-11-24 10:55:56

标签: spring-boot elasticsearch spring-data-elasticsearch

我在进入es时使用spring的rest模板或elasticsearch自己的高/低休息客户感到困惑。与spring rest模板相比,客户端是否提供HTTP连接池,性能等任何优势?两者中哪一个花费较少的时间从服务器获得响应。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:1)

首先,这是一个非常广泛的问题。不确定是否符合SO准则。

但我的两分钱:

  • 高级客户端使用确实提供connection pooling
  • 的低级客户端
  • 高级客户端管理Elastisearch查询主体和响应的编组和解组,因此使用API​​可能更容易工作。

另一方面,如果您熟悉通过提供JSON主体进行的Elasticsearch查询,则可能会发现在JSON主体和用于创建查询的Java类之间进行转换有点困难(例如,当您使用Kibana控制台或其他REST API工具)

我通常通过记录Java API生成的查询来解决此问题,以便可以将其与Kibana控制台或其他REST API工具一起使用。

关于哪种效率高-库对响应时间的影响并不重要。

如果您想使用Spring Reactive功能并使用WebClient,则ES库确实支持异步搜索。

更新

请检查下面的answer by Wim Van den Brande。他提到了使用Transport Client的一个非常有效的观点,该观点已被REST API弃用。

因此,有趣的是,看看RestTemplate或Spring Data ElasticSearch如何更新其API以取代TransportClient。

答案 1 :(得分:1)

使用Spring Data Elasticsearch的最大优点是,您不必为诸如将POJO域类中的请求/请求主体/响应转换为Elasticsearch所需的JSON之类的麻烦。您只需使用ElasticsearchOperations类中实现的*Template类中定义的方法。

或者向上一层抽象,使用所有Spring Data模块提供的Repository接口来存储和搜索/检索数据。

答案 2 :(得分:-1)

关于使用Spring Data Elasticsearch的重要说明和警告。当前,Spring Data Elasticsearch不支持高级REST客户端API的通信。他们正在使用运输客户端。请注意,从Elasticsearch 7.0.0开始不推荐使用TransportClient,并且有望在Elasticsearch 8.0中将其删除!!!

仅供参考,此声明已被另一篇文章确认:Elasticsearch Rest Client with Spring Data Elasticsearch