我想知道索引中存在的所有文档的计数,是否可以使用 java 高级休息客户端 COUNT API 获取计数?
您可以使用 cat count 或 Count API 获取索引中所有文档的计数。如果您使用的是 elasticsearch 6.6 及更高版本,那么您可以点击此链接使用 Java 高级 REST 客户端的 Count API 获取计数。
如果您使用的是旧版本,则必须使用 Java 低级 REST 客户端来获取文档计数。
因为 RestHighLevelClient 建立在 Low Level REST 客户端之上。
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());
然后,您可以解析响应正文以获取计数值。