diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java index 4dfa8f1..af653d6 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java @@ -26,6 +26,8 @@ import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper; import org.dromara.easyes.core.conditions.update.LambdaEsUpdateWrapper; import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.unit.DistanceUnit; +import org.elasticsearch.script.Script; +import org.elasticsearch.search.sort.ScriptSortBuilder; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; import org.slf4j.Logger; @@ -597,6 +599,12 @@ public class ESJobSearchImpl implements IESJobSearchService } // 全局固定:权重优先(必须写在最前面) wrapper.trackScores(); + //最高优先级:data_source="4" 统一放最后 + wrapper.sort(SortBuilders.scriptSort( + new Script("doc.containsKey('data_source') && doc['data_source'].value == '4' ? 1 : 0"), + ScriptSortBuilder.ScriptSortType.NUMBER + ).order(SortOrder.ASC)); + // 匹配得分降序 wrapper.sortByScore(SortOrder.DESC); //0:推荐 1:最热 2:最新发布 3:最大薪资 if(Objects.nonNull(esJobSearch.getOrder())){