public SearchRequest() { SortField defaultSortField = new SortField(); defaultSortField.setField("timestamp"); defaultSortField.setSortOrder(SortOrder.DESC.toString()); sort = new ArrayList<>(); sort.add(defaultSortField); }
private static Comparator<SearchResult> sorted(final List<SortField> fields) { return (o1, o2) -> { ComparisonChain chain = ComparisonChain.start(); for(SortField field : fields) { Comparable f1 = (Comparable) o1.getSource().get(field.getField()); Comparable f2 = (Comparable) o2.getSource().get(field.getField()); chain = chain.compare(f1, f2, new ComparableComparator(field.getSortOrder())); } return chain.result(); }; }
private SortField sortBy(String field, SortOrder order) { SortField sortField = new SortField(); sortField.setField(field); sortField.setSortOrder(order.toString()); return sortField; }
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; }
SortField sf = new SortField(); sf.setField(getThreatTriageField()); sf.setSortOrder(SortOrder.DESC.getSortOrder()); SearchRequest sr = new SearchRequest(); sr.setQuery("*:*"); SortField sfAsc = new SortField(); sfAsc.setField(getThreatTriageField()); sfAsc.setSortOrder(SortOrder.ASC.getSortOrder()); SearchRequest srAsc = new SearchRequest(); srAsc.setQuery("*:*");
FieldType sortFieldType = meta.getOrDefault(sortField.getField(), FieldType.OTHER); org.elasticsearch.search.sort.SortOrder sortOrder = getElasticsearchSortOrder(sortField.getSortOrder()); String missingSortOrder; if(sortOrder == org.elasticsearch.search.sort.SortOrder.DESC) { FieldSortBuilder sortBy = new FieldSortBuilder(sortField.getField()) .order(sortOrder) .missing(missingSortOrder)
@Test public void shouldSortMetaAlertsByAlertStatus() throws Exception { final String guid = "meta_alert"; setupTypings(); // should be able to sort meta-alert search results by 'alert_status' SortField sortField = new SortField(); sortField.setField("alert_status"); sortField.setSortOrder("asc"); // when no meta-alerts exist, it should work Assert.assertEquals(0, searchForSortedMetaAlerts(sortField).getTotal()); // when meta-alert just created, it should work createMetaAlert(guid); Assert.assertEquals(1, searchForSortedMetaAlerts(sortField).getTotal()); // when meta-alert 'esclated', it should work escalateMetaAlert(guid); Assert.assertEquals(1, searchForSortedMetaAlerts(sortField).getTotal()); }