@Override public int hashCode() { int result = indices != null ? indices.hashCode() : 0; result = 31 * result + (query != null ? query.hashCode() : 0); result = 31 * result + getSize(); result = 31 * result + getFrom(); result = 31 * result + (sort != null ? sort.hashCode() : 0); result = 31 * result + (fields != null ? fields.hashCode() : 0); result = 31 * result + (facetFields != null ? facetFields.hashCode() : 0); return result; } }
public SearchResponse search(SearchRequest searchRequest, String fieldList) throws InvalidSearchException { if (searchRequest.getQuery() == null) { throw new InvalidSearchException("Search query is invalid: null"); } if (client == null) { throw new InvalidSearchException("Uninitialized Dao! You must call init() prior to use."); } if (searchRequest.getSize() > accessConfig.getMaxSearchResults()) { throw new InvalidSearchException( "Search result size must be less than " + accessConfig.getMaxSearchResults()); } try { SolrQuery query = buildSearchRequest(searchRequest, fieldList); QueryResponse response = client.query(query); return buildSearchResponse(searchRequest, response); } catch (SolrException | IOException | SolrServerException e) { String msg = e.getMessage(); LOG.error(msg, e); throw new InvalidSearchException(msg, e); } }
/** * Defers to a provided {@link org.elasticsearch.index.query.QueryBuilder} for the query. * @param request The request defining the parameters of the search * @param queryBuilder The actual query to be run. Intended for if the SearchRequest requires wrapping * @return The results of the query * @throws InvalidSearchException When the query is malformed or the current state doesn't allow search */ protected SearchResponse search(SearchRequest request, QueryBuilder queryBuilder) throws InvalidSearchException { org.elasticsearch.action.search.SearchRequest esRequest; org.elasticsearch.action.search.SearchResponse esResponse; if(client == null) { throw new InvalidSearchException("Uninitialized Dao! You must call init() prior to use."); } if (request.getSize() > accessConfig.getMaxSearchResults()) { throw new InvalidSearchException("Search result size must be less than " + accessConfig.getMaxSearchResults()); } esRequest = buildSearchRequest(request, queryBuilder); esResponse = requestSubmitter.submitSearch(esRequest); return buildSearchResponse(request, esResponse); }
@Override public SearchResponse search(SearchRequest searchRequest) throws InvalidSearchException { if(config.getMaxSearchResults() != null && searchRequest.getSize() > config.getMaxSearchResults()) { throw new InvalidSearchException("Search result size must be less than " + config.getMaxSearchResults()); int maxSize = config.getMaxSearchResults() == null?searchRequest.getSize():config.getMaxSearchResults(); for(int i = searchRequest.getFrom();i < response.size()&& finalResp.size() <= maxSize;++i) { finalResp.add(response.get(i));
protected SolrQuery buildSearchRequest( SearchRequest searchRequest, String fieldList) throws IOException, SolrServerException { SolrQuery query = new SolrQuery() .setStart(searchRequest.getFrom()) .setRows(searchRequest.getSize()) .setQuery(searchRequest.getQuery()); // handle sort fields for (SortField sortField : searchRequest.getSort()) { query.addSort(sortField.getField(), getSolrSortOrder(sortField.getSortOrder())); } // handle search fields List<String> fields = searchRequest.getFields(); if (fieldList == null) { fieldList = "*"; if (fields != null) { fieldList = StringUtils.join(fields, ","); } } query.set("fl", fieldList); //handle facet fields List<String> facetFields = searchRequest.getFacetFields(); if (facetFields != null) { facetFields.forEach(query::addFacetField); } query.set("collection", getCollections(searchRequest.getIndices())); return query; }
.size(searchRequest.getSize()) .from(searchRequest.getFrom()) .query(queryBuilder)