如何使用 jest 对 elasticsearch 结果进行排序
how to sort elasticsearch results using jest
所以我正在使用 jest 练习 elasticsearch 5.2 有这个:
@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;
}
但我想按 ID 顺序获取结果(Long 来自 aptitude 的属性)但不太清楚如何操作。
有人能指出我正确的方向吗?
提前致谢
您不需要在 Java 中对结果进行排序,您可以简单地让 ES 为您完成。您可以在下面添加第三行并删除所有 Java 流代码。
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchSourceBuilder.sort("id", SortOrder.ASC);
所以我正在使用 jest 练习 elasticsearch 5.2 有这个:
@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;
}
但我想按 ID 顺序获取结果(Long 来自 aptitude 的属性)但不太清楚如何操作。 有人能指出我正确的方向吗? 提前致谢
您不需要在 Java 中对结果进行排序,您可以简单地让 ES 为您完成。您可以在下面添加第三行并删除所有 Java 流代码。
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchSourceBuilder.sort("id", SortOrder.ASC);