首页 > 解决方案 > 如何在 elasticsearch-6.4.0.jar 中使用 Count API 获取匹配数据的数量

问题描述

我需要使用 REST API 从 ElasticSearch 中获取匹配数据的数量。目前我正在使用 elasticsearch-6.4.0.jar 来编写 API。不幸的是,我在这个版本中找不到 CountAPI。

此外,我尝试使用旧版本的 jar (elasticsearch-2.4.0.jar)。在那里我可以看到 CountRequest 和 CountResponse 类。这个类帮助我们获取计数。

CountRequest countRequest = new CountRequest(); 
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
searchSourceBuilder.query(QueryBuilders.matchAllQuery()); 
countRequest.source(searchSourceBuilder);

但是 2.4.0 是非常旧的版本。因此,您能否帮我在 elasticsearch-6.4.0.jar 中找到已弃用的版本

标签: elasticsearchelasticsearch-rest-client

解决方案


如果您的意思是您使用的是 Java High Level Rest Client 6.4,count则仅在 v6.6 版本中添加了。https://github.com/elastic/elasticsearch/pull/34267

2.4 中的一个基于已从 7.0 弃用的传输客户端。Elastic 建议使用我认为您已经在使用的 HLRC。

HLRC 功能完整,仅在 7.0 中支持所有 API。由于客户端 HLRC 的版本紧密依赖于您的集群版本,您可能会受到限制,但如果可能,请尝试更新到 >=6.6 版本的库。

如果您无法更新驱动程序版本,我能想到的选项是

  • 通过 LLRC(RestClient 类)调用(不支持对象生成器)
  • 或返回并使用传输客户端方法

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.6/java-rest-high-compatibility.html#java-rest-high-compatibility

高级客户端保证能够与运行在相同主要版本和更大或相等次要版本上的任何 Elasticsearch 节点进行通信。它不需要与与之通信的 Elasticsearch 节点处于相同的次要版本,因为它是向前兼容的,这意味着它支持与比它开发的版本更高版本的 Elasticsearch 通信。

6.0 客户端能够与任何 6.x 的 Elasticsearch 节点通信,而 6.1 客户端肯定能够与 6.1、6.2 和任何更高版本的 6.x 通信,但与之前的 Elasticsearch 节点通信时可能会出现不兼容问题版本,例如 6.1 和 6.0 之间,以防 6.1 客户端支持 6.0 节点不知道的某些 API 的新请求正文字段。


推荐阅读