in src/main/java/org/opensearch/knn/plugin/rest/RestKNNStatsHandler.java [100:139]
private KNNStatsRequest getRequest(RestRequest request) {
// parse the nodes the user wants to query
String[] nodeIdsArr = null;
String nodesIdsStr = request.param("nodeId");
if (!Strings.isEmpty(nodesIdsStr)) {
nodeIdsArr = nodesIdsStr.split(",");
}
KNNStatsRequest knnStatsRequest = new KNNStatsRequest(knnStats.getStats().keySet(), nodeIdsArr);
knnStatsRequest.timeout(request.param("timeout"));
// parse the stats the customer wants to see
Set<String> statsSet = null;
String statsStr = request.param("stat");
if (!Strings.isEmpty(statsStr)) {
statsSet = new HashSet<>(Arrays.asList(statsStr.split(",")));
}
if (statsSet == null) {
knnStatsRequest.all();
} else if (statsSet.size() == 1 && statsSet.contains("_all")) {
knnStatsRequest.all();
} else if (statsSet.contains(KNNStatsRequest.ALL_STATS_KEY)) {
throw new IllegalArgumentException("Request " + request.path() + " contains _all and individual stats");
} else {
Set<String> invalidStats = new TreeSet<>();
for (String stat : statsSet) {
if (!knnStatsRequest.addStat(stat)) {
invalidStats.add(stat);
}
}
if (!invalidStats.isEmpty()) {
throw new IllegalArgumentException(unrecognized(request, invalidStats,
knnStatsRequest.getStatsToBeRetrieved(), "stat"));
}
}
return knnStatsRequest;
}