java - 如何在 Spring-data-elasticsearch 中禁用页面查询

标签 java elasticsearch spring-data-elasticsearch

我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,java代码如下:

public void testQuery() {
    SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withFields("createDate","updateDate").withQuery(matchAllQuery()).withPageable(new PageRequest(0,Integer.MAX_VALUE)).build();
    List<Entity> list = template.queryForList(searchQuery, Entity.class);
    for (Entity e : list) {
        System.out.println(e.getCreateDate());
        System.out.println(e.getUpdateDate());
    }
}

我在服务器中获取原始查询日志,如下所示:

{"from":0,"size":10,"query":{"match_all":{}},"fields":["createDate","updateDate"]}

根据查询日志,spring-data-elasticsearch 将为查询添加大小限制。 "from":0, "size":10,如何避免添加大小限制?

最佳答案

您不想这样做,您可以在返回 Iterable 的存储库上使用 findAll 功能。我认为获取所有项目的最佳方法是使用扫描/滚动功能。也许以下代码块可以为您指明正确的方向:

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(QueryBuilders.matchAllQuery())
            .withIndices("customer")
            .withTypes("customermodel")
            .withSearchType(SearchType.SCAN)
            .withPageable(new PageRequest(0, NUM_ITEMS_PER_SCROLL))
            .build();
    String scrollId = elasticsearchTemplate.scan(searchQuery, SCROLL_TIME_IN_MILLIS, false);
    boolean hasRecords = true;
    while (hasRecords) {
        Page<CustomerModel> page = elasticsearchTemplate.scroll(scrollId, SCROLL_TIME_IN_MILLIS, CustomerModel.class);
        if (page != null) {
            // DO something with the records
            hasRecords = (page.getContent().size() == NUM_ITEMS_PER_SCROLL);
        } else {
            hasRecords = false;
        }
    }

关于java - 如何在 Spring-data-elasticsearch 中禁用页面查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730504/

相关文章:

java - intellij 中显示成员的类层次结构

java - 大数据的空请求体

elasticsearch - 如何搜索相似词?

elasticsearch - 如何在 elasticsearch 中存储 Java 8 (JSR-310) 日期

mysql - 来自 MySQL JDBC river 的 Elasticsearch 过滤结果

java - elasticsearch:返回总页数不正确

java - 如何将 'following string ' 20190911T14 :37:08. 7770400' 解析为日期格式

java - 未定义 Base 类型的子方法

javascript - Elasticsearch:我可以避免在文本字段上启用 fielddata 吗?

c# - 使用NEST搜索时出现JsonSerializationException