| | |
| | | } |
| | | NativeSearchQueryBuilder searchQueryBuilder = createSearchQueryBuilder(searchDTO, pageVo); |
| | | if (Objects.nonNull(searchDTO.getCanFilter()) && searchDTO.getCanFilter()) { |
| | | // 使用sn字段排序并在折叠时选择sn最小的记录 |
| | | searchQueryBuilder.withCollapseField("goodsId.keyword"); |
| | | searchQueryBuilder.withSort(SortBuilders.fieldSort("price").order(SortOrder.ASC)); |
| | | } |
| | | NativeSearchQuery searchQuery = searchQueryBuilder.build(); |
| | | searchQuery.setTrackTotalHits(true); |
| | | log.info("searchGoods DSL:{}", searchQuery.getQuery().toString()); |
| | | log.info("searchGoods sort:{}", searchQuery.getElasticsearchSorts().toString()); |
| | | SearchHits<EsGoodsIndex> search = restTemplate.search(searchQuery, EsGoodsIndex.class); |
| | | return SearchHitSupport.searchPageFor(search, searchQuery.getPageable()); |
| | | } |
| | |
| | | |
| | | |
| | | if (pageVo != null && CharSequenceUtil.isNotEmpty(pageVo.getOrder()) && CharSequenceUtil.isNotEmpty(pageVo.getSort())) { |
| | | nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort(pageVo.getSort()).order(SortOrder.valueOf(pageVo.getOrder().toUpperCase()))); |
| | | nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort(pageVo.getSort()).order(SortOrder.valueOf(pageVo.getOrder().toUpperCase())).missing("_last")); |
| | | } else { |
| | | nativeSearchQueryBuilder.withSort(SortBuilders.scoreSort().order(SortOrder.DESC)); |
| | | } |