在Spring Data Elasticsearch中 - 我注意到一些看起来像生成的findAllByFoo
类型方法的错误。
这些似乎仅限于默认大小( 10 ) - 这违背了findAll
操作所期望的语义。
主findAll()
操作确实可以正常工作,但确实会返回所有文档。
所以 - 这是一个错误还是我缺少的东西? 干杯, 尤金。
答案 0 :(得分:5)
它看起来不像是一个错误。
根据elasticsearch的文档(from/size),看起来10是elasticsearch将从搜索查询中返回的默认结果数。
您可以使用适当的Pageable参数修改页面大小,例如:
Page<User> users = repository.findAll(new PageRequest(1, 20))
答案 1 :(得分:1)
您可以使用ElasicsearchTemplate
来搜索多个节点,并提供所需的pageRequest(或结果)数量。默认值为10。
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
public List<MyElasticDocument> getData() {
String textToSearch = "John";
QueryBuilder query = QueryBuilders.boolQuery()
.should(
QueryBuilders.queryStringQuery(textToSearch)
.lenient(true)
.field("jsonNode1")
)
.should(
QueryBuilders.queryStringQuery(textToSearch + "*")
.lenient(true)
.field("jsonNode2")
.field("jsonNode3")
);
NativeSearchQuery build = new NativeSearchQueryBuilder()
.withQuery(query)
.withPageable(new PageRequest(0, 20)) // provide the no. of results you want
.build();
List<MyElasticDocument> elasticDocumentList = elasticsearchTemplate.queryForList(build, MyElasticDocument.class)
return elasticDocumentList;
}
答案 2 :(得分:-1)
根据https://jira.spring.io/browse/DATAES-58,它按设计工作,不会有任何变化。阅读本期中的注释以了解性能背景。