elasticsearch - 如何在 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 中找到已弃用的版本
解决方案
如果您的意思是您使用的是 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 类)调用(不支持对象生成器)
- 或返回并使用传输客户端方法
高级客户端保证能够与运行在相同主要版本和更大或相等次要版本上的任何 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 的新请求正文字段。
推荐阅读
- javascript - 为 ES7 指定 env 选项
- php - 如何从 laravel 中的中间表中获取数据?
- java - java.util.concurrent.ScheduledExecutorService:是否可以在启动另一个服务之前等待服务完成?
- php - 如何使用上传也使用ajax将数据从html表单发送到php
- angular - Angular 5 - 将服务限制为模块
- c# - c# emgucv ,如何在绘制后删除矩形
- php - IIS 服务器,如何为 Laravel 5 配置 url 重写?
- postgresql - 在 postgresql 中的语句的情况下如何使用循环或 IF
- python - 从匹配值列表中删除 dict
- android - Android 7 jni open() 失败 + USB 摄像头控件