在线没有Java API的示例来显示如何限制使用ElasticSearch搜索所有项目所返回的行。我尝试了“过滤器限制”,但它无法正常工作,因为它将带回更多的限制。我知道它的每个片段,但是没有办法解决。我在Java API中都找不到from / size查询/过滤器
SearchQuery searchQuery = startQuery(limit, null).build();
Iterable<Statement> iterableStatements = esSpringDataRepository.search(searchQuery);
if (iterableStatements != null) {
return IteratorUtils.toList(iterableStatements.iterator());
}
private NativeSearchQueryBuilder startQuery(int limit, QueryBuilder query) {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder();
if(query != null) {
searchQueryBuilder = searchQueryBuilder.withQuery(query);
}
if(limit > 0) {
searchQueryBuilder = searchQueryBuilder.withFilter(FilterBuilders.limitFilter(limit));
}
return searchQueryBuilder;
}
最佳答案
好吧,我可以使用它而不是限制过滤器来完美地工作:
searchQueryBuilder = searchQueryBuilder.withPageable(new PageRequest(0, limit));