我是 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 客户端:
您需要利用Request
和Response
类(低级别(并使用适当的端点
Request request = new Request("GET", "/posts/_search");
示例 3:分析文本:
具有高水平的休息能力:
利用分析请求类
使用低级 REST 客户端:
再次使用Request
和Response
类
基本上,在High Level Rest Client
上工作就像在Elasticsearch的API层上工作(通过HTTP包间接工作(,而Low Level
纯粹是在HTTP上工作,即请求和响应模型,即更高的抽象。
希望对您有所帮助!