首页 > 解决方案 > 无法使用带有 spring-data-elasticsearch 的 startScroll 方法进行排序

问题描述

我使用 spring-data-elasticsearch 来开发以 es 为后端的 api。我正在使用startScroll(long scrollTimeInMillis, SearchQuery searchQuery, Class<T> clazz)从弹性搜索中获取结果的方法。但排序不起作用。

我在 searchQuery 中设置排序如下。

NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder().withIndices(<indices>).withTypes(<types>).withSort(<sort>)

在我添加了以下内容<sort>

new FieldSortBuilder("created_at").unmappedType("date").order(SortOrder.valueOf("ASC"))

我还尝试将排序放入可分页,如下所示。

NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder().withIndices(<indices>).withTypes(<types>).withPageable(<pageable>)

在我添加了以下内容<pageable>

Sort sortRequest = Sort.by(Sort.Direction.valueOf('ASC'), "created_at")
PageRequest.of(<pageNumber>, <pageSize>, sortRequest)

两者都不起作用。我开始认为也许滚动不支持排序。

预期的结果是按 created_at ASC 的顺序显示。但现在它只是随机检索。

标签: spring-data-elasticsearch

解决方案


我在使用 3.2 时遇到了同样的问题,我注意到 4.0 已经解决了它


推荐阅读