【发布时间】:2021-09-13 22:43:45
【问题描述】:
我使用 spring-data-elasticsearch 来开发以 es 为后端的 api。我使用startScroll(long scrollTimeInMillis, SearchQuery searchQuery, Class<T> clazz) 方法从elasticsearch 中获取结果。但排序不起作用。
我在 searchQuery 中设置排序如下。
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder().withIndices(<indices>).withTypes(<types>).withSort(<sort>)
我为<sort>添加了以下内容
new FieldSortBuilder("created_at").unmappedType("date").order(SortOrder.valueOf("ASC"))
我也尝试在 pageable 中进行排序,如下所示。
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 的顺序显示。 但现在它只是随机检索到的。
【问题讨论】:
-
你能提供一个最小的可运行示例,其中包含必要的类和一些测试数据来重现它吗?此外,您还需要知道您使用的是哪个版本的 ES、Spring 和 spring-data-elasticsearch。