public Group() { order = new GroupOrder(); order.setGroupOrderType(GroupOrderType.TERM.toString()); order.setSortOrder(SortOrder.DESC.toString()); }
public void setGroupOrderType(String groupOrderType) { this.groupOrderType = GroupOrderType.fromString(groupOrderType); } }
public void setSortOrder(String sortOrder) { this.sortOrder = SortOrder.fromString(sortOrder); }
private List<GroupResult> getGroupResults(List<Group> groups, int index) { Group group = groups.get(index); GroupResult groupResult = new GroupResult(); groupResult.setKey(group.getField() + "_value"); if (index < groups.size() - 1) { groupResult.setGroupedBy(groups.get(index + 1).getField()); groupResult.setGroupResults(getGroupResults(groups, index + 1)); } else { groupResult.setScore(50.0); } groupResult.setTotal(10); return Collections.singletonList(groupResult); }
@Override public GroupResponse group(GroupRequest groupRequest) throws InvalidSearchException { GroupResponse groupResponse = new GroupResponse(); groupResponse.setGroupedBy(groupRequest.getGroups().get(0).getField()); groupResponse.setGroupResults(getGroupResults(groupRequest.getGroups(), 0)); return groupResponse; }
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(); }; }
@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; } }
@Override public int hashCode() { int result = getComment() != null ? getComment().hashCode() : 0; result = 31 * result + (getUsername() != null ? getUsername().hashCode() : 0); result = 31 * result + (int) (getTimestamp() ^ (getTimestamp() >>> 32)); return result; }
@Override public SearchResponse search(SearchRequest searchRequest) throws InvalidSearchException { if(searchRequest.getQuery() == null) { throw new InvalidSearchException("Search query is invalid: null"); } return search(searchRequest, new QueryStringQueryBuilder(searchRequest.getQuery())); }
@Override public GroupResponse group(GroupRequest groupRequest) throws RestException { try { if (groupRequest.getIndices() == null || groupRequest.getIndices().isEmpty()) { groupRequest.setIndices(getDefaultIndices()); } return dao.group(groupRequest); } catch(InvalidSearchException ise) { throw new RestException(ise.getMessage(), ise); } }
private Order getElasticsearchGroupOrder(GroupOrder groupOrder) { if (groupOrder.getGroupOrderType() == GroupOrderType.TERM) { return groupOrder.getSortOrder() == SortOrder.ASC ? Order.term(true) : Order.term(false); } else { return groupOrder.getSortOrder() == SortOrder.ASC ? Order.count(true) : Order.count(false); } }
@Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (searchRequest != null ? searchRequest.hashCode() : 0); return result; } }
public static GroupOrderType fromString(String groupOrderType) { return GroupOrderType.valueOf(groupOrderType.toUpperCase()); } }
@SuppressWarnings("unchecked") public String asJson() { return asJSONObject().toJSONString(); }
public static SortOrder fromString(String order) { return SortOrder.valueOf(order.toUpperCase()); } }
private SortField sortBy(String field, SortOrder order) { SortField sortField = new SortField(); sortField.setField(field); sortField.setSortOrder(order.toString()); return sortField; }
public void setSortOrder(String sortOrder) { this.sortOrder = SortOrder.fromString(sortOrder); }