findAllByX错误地限制为10个结果

时间:2014-12-09 20:56:16

标签: elasticsearch spring-data spring-data-elasticsearch

在Spring Data Elasticsearch中 - 我注意到一些看起来像生成的findAllByFoo类型方法的错误。 这些似乎仅限于默认大小( 10 - 这违背了findAll操作所期望的语义。

findAll()操作确实可以正常工作,但确实会返回所有文档。

所以 - 这是一个错误还是我缺少的东西? 干杯, 尤金。

3 个答案:

答案 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,它按设计工作,不会有任何变化。阅读本期中的注释以了解性能背景。