Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jest对elasticsearch结果进行排序_Java_Spring_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Elasticsearch Jest - Fatal编程技术网 elasticsearch,elasticsearch-jest,Java,Spring,elasticsearch,Elasticsearch Jest" /> elasticsearch,elasticsearch-jest,Java,Spring,elasticsearch,Elasticsearch Jest" />

Java 如何使用jest对elasticsearch结果进行排序

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

因此,我正在使用jest来练习elasticsearch5.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;
}
@覆盖
公共列表(可选){
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);