7

我是弹性搜索的新手。开始使用 Elastic search 构建 Spring Boot 应用程序。

使用最新的 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

4

1 回答 1

15

在下面提到的链接中:

Java Low Level REST Client: Elasticsearch 的官方低级客户端。它允许通过 http 与 Elasticsearch 集群通信。将请求编组和响应不编组留给用户。它与所有 Elasticsearch 版本兼容。

Java High Level REST Client: Elasticsearch 的官方高级客户端。基于低级客户端,它公开 API 特定的方法并负责请求编组和响应解编组。

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

High Level Rest Client我相信使用Low Level Rest Client它,意味着它扩展Low Level Rest Client.

High Level使用over的优点Low Level是:

  • 避免开发人员重新编写代码或代码的可维护性和可读性。
  • 帮助开发人员理解和关联 ES 的 API 使用,就像使用 Kibana 一样
  • 如果还要使用任何 xpack 功能(图形或 ml),高级客户端 API 具有可用的客户端代码,可以使用这些代码,而无需使用低级 API 重写所有内容。

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

示例 1:获取特定文档

使用高级休息客户端:

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

使用低级休息客户端:

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

示例 2:搜索 API

使用高级休息客户端:

SearchRequest searchRequest = new SearchRequest("posts"); 

你可以参考这个链接

使用低级休息客户端:

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

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

示例 3:分析文本:

使用高级休息 Clent:

使用AnalyzeRequest

使用低级休息客户端:

再次使用RequestResponse上课

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

希望有帮助!

于 2020-06-12T12:26:52.653 回答