2017-02-15 6 views
0

so verwende ich ScherzElasticsearch 5.2 zu üben haben diese:, wie man Ergebnisse sortieren Elasticsearch mit Scherz

@Override 
public List<Aptitude> findAllAptitudes() { 
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
    searchSourceBuilder.query(QueryBuilders.matchAllQuery()); 

    Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(APTITUDE_INDEX_NAME).build(); 

    try { 
     SearchResult result = JestClientUtils.getClient().execute(search); 
     List<Hit<Aptitude, Void>> aptitudes = result.getHits(Aptitude.class); 
     return aptitudes.stream().map(this::getAptitude).sorted(new Comparator<Aptitude>() { 

      @Override 
      public int compare(Aptitude o1, Aptitude o2) { 
       return o1.getId().compareTo(o2.getId()); 
      } 
     }).collect(Collectors.toList()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     throw new RuntimeException(e); 
    } 
} 

private Aptitude getAptitude(Hit<Aptitude, Void> hit) { 
    return hit.source; 
} 

, aber ich möchte die Ergebnisse, um von ID erhalten (Lange atribute von Eignung) aber kann nicht ziemlich herausfinden, wie man. kann mir jemand in die richtige richtung zeigen? danke im voraus

Antwort

2

Sie müssen Ihre Ergebnisse nicht in Java sortieren, Sie können einfach ES bitten, es für Sie zu tun. Sie können die dritte Zeile darunter hinzufügen und Ihren gesamten Java Stream-Code entfernen.

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
searchSourceBuilder.query(QueryBuilders.matchAllQuery()); 
searchSourceBuilder.sort("id", SortOrder.ASC); 
+0

dies war genau das, was ich suchte, danke –