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

Hou使用spring数据elasticsearch scroll api排序

荆哲
2023-03-14

看起来像个虫子。排序对于简单的搜索非常有效,但对于滚动则不起作用。我尝试这样做:

FieldSortBuilder sortTimeCreated = SortBuilders.fieldSort("meta.time_created").order(SortOrder.ASC);
    SearchQuery searchQuery = new NativeSearchQueryBuilder()
                    .withSort(sortTimeCreated)
                    .withQuery(queryBuilder)
                    .withFields("meta.time_created")
                    .withPageable(PageRequest.of(0, 5/*, Sort.Direction.ASC, "meta.time_created"*/)) //was not work
                    .build();
//searchQuery.addSort(Sort.by("meta.time_created").ascending()); //was not work too(used not together with sortTimeCreated)

之后:

 Page<ElasticRecord> search = elasticsearchTemplate.queryForPage(searchQuery, ElasticRecord.class);
 Page<ElasticRecord> scroll = elasticsearchTemplate.startScroll(30000, searchQuery, ElasticRecord.class);

运行时,应用程序显示:

  1. 搜索:

|调试o.s.d.elasticsearch。果心查询:937{“from”:0,“size”:5,“QUERY”:{“constant\u score”:{“filter”:{…跳过…},“boost”:1.0}},“version”:true,“\u source”:{“includes”:[“meta.time\u created”],“excludes”:[]},“sort”:[{“meta.time\u created”:{“order”:“asc”}}]}

|调试o.s.d.elasticsearch。果心查询:937{“from”:0,“size”:5,“QUERY”:{“constant\u score”:{“filter”:{…跳过…},“boost”:1.0}},“version”:true,“\u source”:{“includes”:[“meta.time\u created”],“excludes”:[]}}

Spring护套(2.1.5.释放(Spring数据弹性搜索3.1.8.释放),2.1.2。释放(Spring数据html" target="_blank">elasticsearch 3.1.8.RELEASE、3.1.5.RELEASE 3.1.0.RELEASE)

有什么想法吗?

共有1个答案

赫连捷
2023-03-14

这是在第457期中添加的,该版本于2019年4月24日合并到当前母版中。它在Spring Data Elasticsearch 3.2.0 M4中提供。

 类似资料:
  • 我使用的是Spring数据JpaRepository,我发现它非常容易使用。我实际上需要所有这些功能——分页、排序、过滤。不幸的是,有一件令人讨厌的事情似乎迫使我退回到普通JPA的使用上来。 我需要按关联集合的大小订购。例如,我有: 我必须按bes排序。size() 是否有办法以某种方式自定义排序,仍然利用分页、过滤和其他Spring Data的强大功能?

  • 我能在表达式末尾不给出排序参数吗?因为我需要在over()函数中使用sort参数。 例子: 或sort inside over的表达式:,-#sort\n,#{#sort}。。 我仍然得到: JAVAlang.IllegalArgumentException:方法公共抽象java的查询验证失败。整型。。。方法的名称。。(int,int,int,org.springframework.data.do

  • 我目前正在使用带有Spring Data commons 1.9.1和Spring JPA 1.7.1的JpaSort。我需要使用QueryDSL,因为JPA不允许为空值定义排序。 这是我的存储库 我在我的控制器中这样做: 这就是我对JPA的看法: 这是我为QueryDSL更改的内容: 然而,似乎什么都没有得到整理。我已经启用了调试日志记录,我看到了这一点: 如果我将其更改为: 然后,按我的“数据

  • Spring Boot 2.0.1.RELEASE项目包含Spring Data JPA和Spring Data REST。似乎忽略了RESTendpoint中的<code>sort</code>参数(但在单元测试中使用相同的存储库方法)。存储库如下: } 实体(已编辑)如下: 当我尝试使用导出的RESTendpoint调用它时,例如: http://localhost:8080/api/v1/o

  • 问题内容: 我正在使用Spring Data JpaRepository,发现它非常易于使用。我实际上需要所有这些功能- 分页,排序,过滤。不幸的是,有一件令人讨厌的事情似乎迫使我退回到使用普通的JPA。 我需要按相关集合的大小排序。例如,我有: 我必须排序 有没有办法通过分页,过滤和其他Spring Data强大功能来自定义排序? 问题答案: 关于spring-data,我尚未意识到的第一件事也

  • 我遇到了一个问题,我需要将两列实体相乘来排序,为了想象,实体是: 我不能使用命名查询,因为我的查询基于用户输入进行了大量筛选(不能将where子句放入查询,因为如果用户没有选择任何值,where子句不能只在查询中)。 为了简单点。我需要类似findAll(谓词,Pageable)的东西,但我需要强制查询按“amount*unitPrice”对其进行排序,但也要保持我的Preditate(过滤器)和