方法:
GET {es-url}/_cat/thread_pool?v&h=node_name,name,active,queue,rejected&format=json
@Service
@Slf4j
public class EsThreadPoolService {
@Autowired
private RestTemplate restTemplate;
private final List<String> draw = Arrays.asList("bulk", "get", "index", "search");
public List<Map> executeCatThreadPool(String url, String password) {
url += "/_cat/thread_pool?v&h=node_name,name,active,queue,rejected&format=json";
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE);
headers.add(HttpHeaders.AUTHORIZATION, "Basic " + password);
try {
ResponseEntity<JSONArray> result = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(headers), JSONArray.class);
JSONArray source = result.getBody();
return parse(result.getBody());
} catch (Exception e) {
log.error("executeCatThreadPool error", e);
return Collections.EMPTY_LIST;
}
}
private List<Map> parse(JSONArray data) {
return data.toJavaList(Map.class).stream().filter(v -> draw.contains(String.valueOf(v.get("name")))).collect(Collectors.toList());
}
}