@Override public Page<Movie> query(QueryDTO queryDTO, int pageNo, int size) { SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().from(from(pageNo, size)).size(size); if (queryDTO.getMinScore() != null) { BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); RangeQueryBuilder rangeQueryBuilder = new RangeQueryBuilder("score").gte(queryDTO.getMinScore()); boolQueryBuilder.must(rangeQueryBuilder); searchSourceBuilder.query(boolQueryBuilder); } if (queryDTO.getOrderBy() != null) { searchSourceBuilder.sort(queryDTO.getOrderBy(), SortOrder.DESC); } log.debug("搜索DSL:{}", searchSourceBuilder.toString()); Search search = new Search.Builder(searchSourceBuilder.toString()) .addIndex(INDEX) .addType(TYPE) .build(); try { SearchResult result = client.execute(search); List<Movie> movies = result.getSourceAsObjectList(Movie.class, false); int took = result.getJsonObject().get("took").getAsInt(); Page<Movie> page = Page.<Movie>builder().list(movies).pageNo(pageNo).size(size).total(result.getTotal()).took(took).build(); return page; } catch (IOException e) { log.error("search异常", e); return null; } }