执行 elasticsearch 的 api
直接执行 elastic 的 api 在 RestHighLevelClient 是无法直接执行的,所以需要从 RestHighLevelClient 获取 RestClient 并执行操作
Request request = new Request(
"GET",
"/");
Response response = restClient.performRequest(request);
获取 response 的结果
执行后,需要获取结果,一般只需要知道是否正确执行,但是有时候还是需要得到方法体,比如获取集群监控状态,则需要获取方法体
Response response = restClient.performRequest(new Request("GET", "/"));
RequestLine requestLine = response.getRequestLine();
HttpHost host = response.getHost();
int statusCode = response.getStatusLine().getStatusCode();
Header[] headers = response.getHeaders();
//获取方法体
String responseBody = EntityUtils.toString(response.getEntity());
例如,查看es集群健康状态
//先注入@Autowired private RestHighLevelClient restHighLevelClient;
RestClient lowLevelClient = restHighLevelClient.getLowLevelClient();
Request scriptRequest = new Request("GET", "/_cluster/health?pretty");
Response response = lowLevelClient.performRequest(scriptRequest);
//获取 es集群健康状态 的json
String responseBody = EntityUtils.toString(response.getEntity());
异步执行 elasticsearch 的 api
Request request = new Request(
"GET",
"/");
Cancellable cancellable = restClient.performRequestAsync(request,
new ResponseListener() {
@Override
public void onSuccess(Response response) {
}
@Override
public void onFailure(Exception exception) {
}
});