我有一个Sping Boot 应用程序,正在使用spring-data-elasticsearch-5.1.2创建一个scroll
请求,以从elasticsearch获取大量的“book“。设置如下所示:
public interface BookRepository extends ElasticsearchRepository<Book, String> {
Stream<Book> findByAuthorName(String authorName);
}
// and client code invokes like
try (Stream<Book> books = bookRepository.findByAuthor(authorName)) {
return books.toList();
}
catch (Exception e) {
// handle
}
这确实有效,但默认情况下滚动请求大小为500(即所生成的查询具有size: 500
)。我希望能够更改此值以获取更大的结果集,但我不确定如何做到这一点。我尝试过更新repository方法以接受Pageable
,然后使用更大的页面大小进行调用。例如
public interface BookRepository extends ElasticsearchRepository<Book, String> {
// Add Pageable parameter
Stream<Book> findByAuthorName(String authorName, Pageable page);
}
// Pass pageable with larger size
try (Stream<Book> books = bookRepository.findByAuthor(authorName, Pageable.ofSize(1_000))) {
return books.toList();
}
catch (Exception e) {
// handle
}
但是,生成的查询似乎没有受到影响。
{
"_source": { ... },
"from": 0,
"query": { ... },
"size": 500, <----- HOW TO CHANGE?
"track_scores": false,
"version": true
}
如何更改查询大小?
编辑:添加关于使用仓库滚动的相关文档:
- https://docs.spring.io/spring-data/elasticsearch/docs/5.1.2/reference/html/#elasticsearch.scroll
- https://docs.spring.io/spring-data/elasticsearch/docs/5.1.2/reference/html/#repositories.query-streaming
2条答案
按热度按时间gwo2fgha1#
在当前版本(5.1)中,
Pageable
没有被考虑用于返回Stream<E>
的存储库方法,总是使用默认大小500。我为此创建了an issue,它已经实现并合并,将从5.2-RC 1开始包含。
eh57zj3b2#
试着按照doc中的指导使用
PageRequest
如何?