use of com.netflix.exhibitor.core.entities.SearchId in project exhibitor by soabase.
the class IndexResource method cacheSearch.
@Path("cache-search")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response cacheSearch(SearchRequest request) throws Exception {
LogSearch logSearch = getLogSearch(request.getIndexName());
if (logSearch == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
SearchId searchHandle;
try {
boolean hasTerms = false;
QueryBuilder builder = QueryBuilder.builder();
if ((request.getPathPrefix() != null) && (request.getPathPrefix().length() > 0)) {
hasTerms = true;
builder.pathPrefix(request.getPathPrefix());
}
if (request.getOperationType() >= 0) {
hasTerms = true;
builder.operationType(request.getOperationType());
}
if ((request.getFirstDate() != null) && (request.getSecondDate() != null)) {
hasTerms = true;
Date startDate;
Date endDate;
if (request.getFirstDate().before(request.getSecondDate())) {
startDate = request.getFirstDate();
endDate = request.getSecondDate();
} else {
startDate = request.getSecondDate();
endDate = request.getFirstDate();
}
Calendar endOfDayEndDate = Calendar.getInstance();
endOfDayEndDate.setTime(endDate);
endOfDayEndDate.set(Calendar.HOUR_OF_DAY, 23);
endOfDayEndDate.set(Calendar.MINUTE, 59);
endOfDayEndDate.set(Calendar.SECOND, 59);
endDate = endOfDayEndDate.getTime();
builder.dateRange(startDate, endDate);
}
Query query = hasTerms ? builder.build(QueryBuilder.Type.AND) : null;
String id = logSearch.cacheSearch(query, request.getReuseHandle(), request.getMaxResults());
searchHandle = new SearchId(id);
} finally {
context.getExhibitor().getIndexCache().releaseLogSearch(logSearch.getFile());
}
return Response.ok(searchHandle).build();
}
Aggregations