首页 > 解决方案 > 如何使用 JAVA High Level Rest Client 获取索引中存在的文档网总数

问题描述

我想知道索引中存在的所有文档的计数,是否可以使用 java 高级休息客户端 COUNT API 获取计数?

标签: javaspring-bootelasticsearch

解决方案


您可以使用cat countCount API获取索引中所有文档的计数。如果您使用的是 elasticsearch 版本 6.6 及更高版本,则可以点击此链接以使用 Java High Level REST Client 的 Count API 获取计数。

如果您使用的是旧版本,则必须使用 Java Low Level REST Client 来获取文档计数。

因为RestHighLevelClient建立在 Low Level REST Client 之上。

RestHighLevelClient client = new RestHighLevelClient(
    RestClient.builder(
            new HttpHost("localhost", 9200, "http"),
            new HttpHost("localhost", 9201, "http")));

您可以使用它从 RestHighLevelClient 获取低级客户端:

RestClient lowLevelClient = client.getLowLevelClient();

对 elasticsearch 6.3 及更低版本执行以下命令:

Response response = client.getLowLevelClient().performRequest("GET", indexName+"/_count");

对 elasticsearch 版本 6.3 到 6.5 执行以下操作:

Request request = new Request("GET", indexName+"/_count");
client.getLowLevelClient().performRequest(request);

将响应转换为字符串:

String responseBody = EntityUtils.toString(response.getEntity());

然后你可以解析responseBody来获取计数值。


推荐阅读