0

没有使用 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;
}
4

1 回答 1

4

好吧,我让它完美地使用它而不是限制过滤器:

searchQueryBuilder = searchQueryBuilder.withPageable(new PageRequest(0, limit));
于 2014-09-23T13:12:02.357 回答