elasticsearch-rest-high-level-client vs elasticsearch-rest-c



我是 Elastic 搜索的新手。开始使用 Elastic 搜索构建 Spring 启动应用程序。

使用最新的 ES 版本"elasticsearch-7.7.1"并进行集成,我使用以下 maven 依赖项:

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.7.1</version>
</dependency>

我在应用程序启动中遇到了问题,通过添加以下依赖项来解决:

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.7.1</version>
</dependency>

谁能解释为什么需要elasticsearch-rest-client以及它与elasticsearch-rest-high-level-client有何不同?

在下面提到的链接中:

Java 低级

REST 客户端:官方的低级客户端弹性搜索。它允许与Elasticsearch集群进行通信 通过 HTTP。将请求编组和响应保留为取消编组 给用户。它与所有Elasticsearch版本兼容。

Java 高级 REST 客户端:官方的高级客户端 弹性搜索。基于低级客户端,公开特定于 API 方法并处理请求编组和响应 取消编组。

了解更多的最佳方法是阅读javadocs,下面分别是链接

  • 高级 Rest Client Javadoc
  • 低级 Rest 客户端 Javadoc

High Level Rest Client利用了我相信的Low Level Rest Client,这意味着它扩展了Low Level Rest Client类和接口

Low Level相比,使用High Level的优点是:

避免
  • 开发人员重写代码,换句话说,避免代码的可维护性和可读性。
  • 帮助开发人员理解 ES 的 API 用法并与之关联,就像使用 Kibana 一样
  • 如果同时要使用任何xpack功能(图形或ml(,高级客户端API具有可用的客户端代码,可以使用该代码,而无需使用低级API重写所有内容。

下面的示例示例可以帮助我猜测:

示例 1:获取特定文档

使用高级 Rest 客户端:

GetRequest getRequest = new GetRequest("posts", "1");   

使用低级 REST 客户端:

Request request = new Request("GET", "/posts/1");

示例 2:搜索 API

使用高级 Rest 客户端:

SearchRequest searchRequest = new SearchRequest("posts"); 

您可以参考此链接

使用低级 REST 客户端:

您需要利用RequestResponse类(低级别(并使用适当的端点

Request request = new Request("GET", "/posts/_search");

示例 3:分析文本:

具有高水平的休息能力:

利用分析请求类

使用低级 REST 客户端:

再次使用RequestResponse

基本上,在High Level Rest Client上工作就像在Elasticsearch的API层上工作(通过HTTP包间接工作(,Low Level纯粹是在HTTP上工作,即请求和响应模型,即更高的抽象。

希望对您有所帮助!

最新更新