public SearchQuery<T> add(String name, SearchOp op, String val) { if (op == SearchOp.AND_EQ) { qb.andEQ(name, val); } else if (op == SearchOp.AND_GT) { qb.andGT(name, val); } else if (op == SearchOp.AND_GTE) { qb.andGTE(name, val); } else if (op == SearchOp.AND_LT) { qb.andLT(name, val); } else if (op == SearchOp.AND_LTE) { qb.andLTE(name, val); } else if (op == SearchOp.AND_NOT_EQ) { qb.andNotEQ(name, val); } else if (op == SearchOp.OR_EQ) { qb.orEQ(name, val); } else if (op == SearchOp.OR_GT) { qb.orGT(name, val); } else if (op == SearchOp.OR_GTE) { qb.orGTE(name, val); } else if (op == SearchOp.OR_LT) { qb.orLT(name, val); } else if (op == SearchOp.OR_LTE) { qb.orLTE(name, val); } else if (op == SearchOp.OR_NOT_EQ) { qb.orNotEQ(name, val); } else { throw new IllegalArgumentException(String.format("%s is not vaild operator for this function, try another add() ???", op)); } return this; }
public SearchQuery<T> add(String name, SearchOp op, List<String> vals) { if (op == SearchOp.AND_IN) { qb.andIn(name, vals); } else if (op == SearchOp.AND_NOT_IN) { qb.andNotIn(name, vals); } else if (op == SearchOp.OR_IN) { qb.orIn(name, vals); } else if (op == SearchOp.OR_NOT_IN) { qb.orNotIn(name, vals); } else { throw new IllegalArgumentException(String.format("%s is not vaild operator for this function, try another add() ???", op)); } return this; }
@Override public String toString() { return build(); }
public SearchQuery(Class<?> invClass) { try { inventoryClass = invClass; uri = new URI(String.format("%s/%s/%s/_search", mgr.getElasticSearchBaseUrl(), invClass.getSimpleName().toLowerCase(), invClass.getSimpleName()) .replaceAll("(?<!:)//", "/")); qb = new QueryBuilder(); } catch (URISyntaxException e) { throw new CloudRuntimeException(e); } }
private String callElasticSearch() { try { build(); HttpPost post = new HttpPost(uri); final String requestBody = qb.build(); logger.trace(String.format("executing elasticsearch query as:\n%s", requestBody)); StringEntity body = new StringEntity(requestBody); body.setChunked(false); post.setEntity(body); ResponseHandler<String> rspHandler = new ResponseHandler<String>() { @Override public String handleResponse(HttpResponse rsp) throws ClientProtocolException, IOException { String res; if (rsp.getStatusLine().getStatusCode() != HttpStatus.SC_OK && rsp.getStatusLine().getStatusCode() != HttpStatus.SC_CREATED) { logger.warn(String.format("Failed to search index[%s] , because: \nstatus line: %s\nbody: %s\nrequest body: %s", inventoryClass.getSimpleName(), rsp.getStatusLine(), EntityUtils.toString(rsp.getEntity()), requestBody)); throw new IOException(String.format("Failed to search index[%s] because %s", inventoryClass.getSimpleName(), rsp.getStatusLine())); } else { res = EntityUtils.toString(rsp.getEntity()); logger.trace(String.format("Successfully search index[%s], %s", inventoryClass.getSimpleName(), res)); } return res; } }; String res = mgr.getHttpClient().execute(post, rspHandler); return res; } catch (Exception e) { throw new CloudRuntimeException(e.getMessage(), e); } }