2014-09-19 49 views
0

沒有一個與Java API聯機的示例,該示例演示如何限制通過ElasticSearch搜索返回的所有項目的行。我嘗試過濾器限制,但它不會工作,因爲它會帶來更多的限制。我知道它每片碎片,但是沒有辦法解決這個問題。我無法找到從/大小查詢/過濾器無論是Java API中Elasticsearch使用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));