6

findAllByFoo在 Spring Data Elasticsearch 中 - 我注意到生成的类型方法看起来像一个错误。这些似乎仅限于默认大小(10 - 这与您期望从findAll操作中获得的语​​义背道而驰。

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

那么-这是一个错误还是我遗漏了什么?干杯,尤金。

4

3 回答 3

5

它看起来不像一个错误。

根据 elasticsearch 的文档(from/size),看起来 10 是 elasticsearch 从搜索查询返回的默认结果数。

您可以使用适当的 Pageable 参数修改页面大小,例如:

Page<User> users = repository.findAll(new PageRequest(1, 20))
于 2015-01-06T09:08:03.970 回答
2

您可以使用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;
}
于 2018-10-14T19:52:05.530 回答
-1

根据https://jira.spring.io/browse/DATAES-58,它按设计工作,不会更改。阅读本期评论,了解性能背景。

于 2015-10-27T21:29:25.767 回答