Java 如何使用jest对elasticsearch结果进行排序
因此,我正在使用jest来练习elasticsearch5.2:Java 如何使用jest对elasticsearch结果进行排序,java,spring,
elasticsearch,elasticsearch-jest,Java,Spring,
elasticsearch,Elasticsearch Jest,因此,我正在使用jest来练习elasticsearch5.2: @Override public List<Aptitude> findAllAptitudes() { SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); Search search = ne
@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;
}
@覆盖
公共列表(可选){
SearchSourceBuilder SearchSourceBuilder=新的SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
Search Search=new Search.Builder(searchSourceBuilder.toString()).addIndex(APTITUDE_INDEX_NAME).build();
试一试{
SearchResult=JestClientUtils.getClient().execute(search);
列出资质=result.getHits(Aptitude.class);
return aptitudes.stream().map(this::getAptitude).sorted(new Comparator()){
@凌驾
公共智力比较(能力倾向o1,能力倾向o2){
返回o1.getId().compareTo(o2.getId());
}
}).collect(Collectors.toList());
}捕获(IOE异常){
e、 printStackTrace();
抛出新的运行时异常(e);
}
}
私人能力倾向获取能力倾向(命中){
返回hit.source;
}
但是我想按ID(Longatribute from aptitude)的顺序得到结果,但我不太明白如何去做。
谁能给我指一下正确的方向吗?
提前感谢您不需要用Java对结果进行排序,只需让ES为您排序即可。您可以添加下面的第三行并删除所有Java流代码
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchSourceBuilder.sort("id", SortOrder.ASC);
您不需要用Java对结果进行排序,只需让ES为您排序即可。您可以添加下面的第三行并删除所有Java流代码
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchSourceBuilder.sort("id", SortOrder.ASC);