我刚开始弹性搜索。开始构建一个使用弹性搜索的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**?**需要,以及它与有什么不同?
发布于 2020-06-12 12:26:52
在链接中,它提到以下内容:
Java低级REST客户端:,官方的低级别客户端,用于Elasticsearch。它允许通过http与Elasticsearch集群通信。离开请求编组和响应不编组给用户。它与所有Elasticsearch版本兼容。 Java高级REST客户端:,官方的高级客户端。基于底层客户端,它公开了特定于API的方法,并负责请求编组和响应解编组。
了解这方面更多信息的最佳方法是阅读javadocs,下面的链接分别为
High Level Rest Client使用了Low Level Rest Client,我认为这意味着扩展了类和接口Low Level Rest Client的。
使用High Level而不是Low Level的优点是:
下面的示例可以帮助我猜:
示例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的:
具有低级别Rest客户端的:
再次使用Request和Response类
基本上,在High Level Rest Client上工作就像在处理Elasticsearch的API层(它通过HTTP间接工作),而Low Level则是纯粹地处理HTTP,即请求和响应模型,即更高的抽象。
希望这能帮上忙!
https://stackoverflow.com/questions/62340904
复制相似问题