elasticsearch-rest-high-level-client 与 elasticsearch-rest-client
elasticsearch-rest-high-level-client vs elasticsearch-rest-client
我是 Elastic 搜索的新手。开始使用 Elastic search 构建 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
有何不同?
在link中提到如下:
Java Low Level REST Client: the official low-level client for
Elasticsearch. It allows to communicate with an Elasticsearch cluster
through http. Leaves requests marshalling and responses un-marshalling
to users. It is compatible with all Elasticsearch versions.
Java High Level REST Client: the official high-level client for
Elasticsearch. Based on the low-level client, it exposes API specific
methods and takes care of requests marshalling and responses
un-marshalling.
了解更多信息的最佳方法是阅读下面分别是 link 的 javadocs
High Level Rest Client
使用了 Low Level Rest Client
,我相信这意味着,它 扩展了 classes 和接口 共 Low Level Rest Client
。
使用 High Level
优于 Low Level
的优点是:
- 避免开发人员重写代码或代码的可维护性和可读性。
- 帮助开发人员理解 ES 的 API 用法并与之相关联,就像使用 Kibana
- 如果要使用任何 xpack 功能(图形或 ml),高级客户端 API 具有可用的客户端代码,无需使用低级 [=104] 重写所有内容即可使用=].
下面的示例可以帮助我猜测:
示例 1:获取特定文档
使用高级 Rest 客户端:
GetRequest getRequest = new GetRequest("posts", "1");
使用低级别 Rest 客户端:
Request request = new Request("GET", "/posts/1");
示例 2:搜索 API
使用高级 Rest 客户端:
SearchRequest searchRequest = new SearchRequest("posts");
可以参考this link
使用低级别 Rest 客户端:
您需要使用 Request
和 Response
classes(低级别)并使用适当的端点
Request request = new Request("GET", "/posts/_search");
示例 3:分析文本:
有高级 Rest 客户端:
利用AnalyzeRequestclass
使用低级别 Rest 客户端:
再次使用Request
和Response
class
基本上在 High Level Rest Client
上工作就像在 Elasticsearch 的 API 层上工作(通过 HTTP 包间接工作) 而 Low Level
纯粹在 HTTP 上工作,即 Request and Response 模型,即更高的抽象。
希望对您有所帮助!
我是 Elastic 搜索的新手。开始使用 Elastic search 构建 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
有何不同?
在link中提到如下:
Java Low Level REST Client: the official low-level client for Elasticsearch. It allows to communicate with an Elasticsearch cluster through http. Leaves requests marshalling and responses un-marshalling to users. It is compatible with all Elasticsearch versions.
Java High Level REST Client: the official high-level client for Elasticsearch. Based on the low-level client, it exposes API specific methods and takes care of requests marshalling and responses un-marshalling.
了解更多信息的最佳方法是阅读下面分别是 link 的 javadocs
High Level Rest Client
使用了 Low Level Rest Client
,我相信这意味着,它 扩展了 classes 和接口 共 Low Level Rest Client
。
使用 High Level
优于 Low Level
的优点是:
- 避免开发人员重写代码或代码的可维护性和可读性。
- 帮助开发人员理解 ES 的 API 用法并与之相关联,就像使用 Kibana
- 如果要使用任何 xpack 功能(图形或 ml),高级客户端 API 具有可用的客户端代码,无需使用低级 [=104] 重写所有内容即可使用=].
下面的示例可以帮助我猜测:
示例 1:获取特定文档
使用高级 Rest 客户端:
GetRequest getRequest = new GetRequest("posts", "1");
使用低级别 Rest 客户端:
Request request = new Request("GET", "/posts/1");
示例 2:搜索 API
使用高级 Rest 客户端:
SearchRequest searchRequest = new SearchRequest("posts");
可以参考this link
使用低级别 Rest 客户端:
您需要使用 Request
和 Response
classes(低级别)并使用适当的端点
Request request = new Request("GET", "/posts/_search");
示例 3:分析文本:
有高级 Rest 客户端:
利用AnalyzeRequestclass
使用低级别 Rest 客户端:
再次使用Request
和Response
class
基本上在 High Level Rest Client
上工作就像在 Elasticsearch 的 API 层上工作(通过 HTTP 包间接工作) 而 Low Level
纯粹在 HTTP 上工作,即 Request and Response 模型,即更高的抽象。
希望对您有所帮助!