2014-09-19 4 views
0

В Интернете нет Java-интерфейса, чтобы показать, как ограничить строки, возвращающиеся из поиска с помощью ElasticSearch для всех элементов. Я попробовал фильтр Limit, но он просто не работал, потому что он вернул бы больше, чем предел. Я знаю его на каждый осколок, но нет никакого способа обойти это. Я не могу найти из/размер запроса/фильтра либо в API JavaElasticsearch захватывает все, но ограничивается определенным числом с помощью Java API

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

Ну я это прекрасно работать с этим вместо предельного фильтра:

searchQueryBuilder = searchQueryBuilder.withPageable(new PageRequest(0, limit));