当前位置: 首页 > 知识库问答 >
问题:

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

越雨泽
2023-03-14

我使用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,如何避免添加尺寸限制?


共有1个答案

殷功
2023-03-14

您不想这样做,您可以在返回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;
        }
    }
 类似资料:
  • 如何使用spring data-elasticsearch实现这一点?

  • 问题内容: 我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,如下所示的Java代码: 虽然我怎么知道发送到elasticssearch服务器的原始http查询?我如何启用日志记录,我尝试添加log4j,但是似乎spring-data- elasticsearch没有记录查询。 问题答案: 我没有针对Spring Data Elastics

  • 我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,java代码如下: 然而,我如何知道发送到elasticssearch服务器的原始http查询?如何启用日志记录,我尝试添加log4j,但spring数据elasticsearch似乎没有记录查询。

  • 我使用的是ElasticSearch7.1.0,我想创建一个spring-boot应用程序,并使用Spring-Data-Elastic-Search与Elasticsearch连接。但我还没有找到使用查询和聚合的解决方案。

  • 我正在使用spring-data-elasticsearch。我已经使用带有许多子标准的标准构建了大多数查询条件。现在我想为嵌套字段包含一个简单的查询条件。但是使用uery_stringAPI来标准corms查询,这不适用于嵌套字段。我期待嵌套查询。 如何在没有NativeSearchQuery的情况下使用条件来支持这一点? 嵌套映射 我想查询“ae.su.keyword”字段。构建标准使用此字段

  • 我试图在elasticsearch spring数据中使用@query annotation来进行复杂的查询,但当我尝试下面的简单查询时,我得到了一个错误 堆栈跟踪