/** * @see io.apiman.manager.api.core.IMetricsAccessor#getResponseStatsSummary(java.lang.String, * java.lang.String, java.lang.String, org.joda.time.DateTime, org.joda.time.DateTime) */ @Override @SuppressWarnings("nls") public ResponseStatsSummaryBean getResponseStatsSummary( String organizationId, String serviceId, String version, DateTime from, DateTime to) { ResponseStatsSummaryBean rval = new ResponseStatsSummaryBean(); try { String query = "{" + " \"query\": {" + " \"filtered\" : {" + " \"query\" : {" + " \"range\" : {" + " \"requestStart\" : {" + " \"gte\": \"${from}\"," + " \"lte\": \"${to}\"" + " }" + " }" + " }," + " \"filter\": {" + " \"and\" : [" + " { \"term\" : { \"serviceOrgId\" : \"${serviceOrgId}\" } }," + " { \"term\" : { \"serviceId\" : \"${serviceId}\" } }," + " { \"term\" : { \"serviceVersion\" : \"${serviceVersion}\" } }" + " ]" + " }" + " }" + " }," + " \"size\": 0, " + " \"aggs\" : {" + " \"total_failures\" : {" + " \"filter\" : { \"term\": { \"failure\": true } }" + " }," + " \"total_errors\" : {" + " \"filter\" : { \"term\": { \"error\": true } }" + " }" + " }" + "}"; Map<String, String> params = new HashMap<>(); params.put("from", formatDate(from)); params.put("to", formatDate(to)); params.put("serviceOrgId", organizationId.replace('"', '_')); params.put("serviceId", serviceId.replace('"', '_')); params.put("serviceVersion", version.replace('"', '_')); StrSubstitutor ss = new StrSubstitutor(params); query = ss.replace(query); Search search = new Search.Builder(query).addIndex(INDEX_NAME).addType("request").build(); SearchResult response = getEsClient().execute(search); rval.setTotal(response.getTotal()); rval.setFailures( response.getAggregations().getFilterAggregation("total_failures").getCount()); rval.setErrors(response.getAggregations().getFilterAggregation("total_errors").getCount()); } catch (IOException e) { log.error(e); } return rval; }