Browse Source

1、优化es的查询结果

rayson 9 months ago
parent
commit
2041b4344b

+ 19 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/es/job/ESJobAdvertisedMergeDO.java

@@ -4,10 +4,7 @@ package com.citu.module.menduner.system.dal.es.job;
 import com.citu.framework.es.core.dataobject.ESBaseDO;
 import com.citu.module.menduner.system.enums.FieldAnalyzer;
 import lombok.Data;
-import org.springframework.data.elasticsearch.annotations.DateFormat;
-import org.springframework.data.elasticsearch.annotations.Document;
-import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.FieldType;
+import org.springframework.data.elasticsearch.annotations.*;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
@@ -46,7 +43,12 @@ public class ESJobAdvertisedMergeDO extends ESBaseDO {
     /**
      * 职位名称
      */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    @MultiField(
+            mainField = @Field(type = FieldType.Text, analyzer = FieldAnalyzer.IK_MAX_WORD),
+            otherFields = {
+                    @InnerField(suffix = "keyword", type = FieldType.Keyword, ignoreAbove = 256)
+            }
+    )
     private String name;
     /**
      * 职位类型id
@@ -142,12 +144,22 @@ public class ESJobAdvertisedMergeDO extends ESBaseDO {
     /**
      * 企业全称
      */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    @MultiField(
+            mainField = @Field(type = FieldType.Text, analyzer = FieldAnalyzer.IK_MAX_WORD),
+            otherFields = {
+                    @InnerField(suffix = "keyword", type = FieldType.Keyword, ignoreAbove = 256)
+            }
+    )
     private String enterpriseName;
     /**
      * 企业别称
      */
-    @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text)
+    @MultiField(
+            mainField = @Field(type = FieldType.Text, analyzer = FieldAnalyzer.IK_MAX_WORD),
+            otherFields = {
+                    @InnerField(suffix = "keyword", type = FieldType.Keyword, ignoreAbove = 256)
+            }
+    )
     private String enterpriseAnotherName;
     /**
      * 企业官网

+ 116 - 116
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/old/MdeOldSyncService.java

@@ -142,22 +142,22 @@ public class MdeOldSyncService {
     @Async
     @TenantIgnore
     public void run() {
-        // 同步区域
-        syncArea();
-        // 同步职位信息
-        syncPosition();
+//        // 同步区域
+//        syncArea();
+//        // 同步职位信息
+//        syncPosition();
         // 同步用户信息
         syncUser();
-        // 同步vip企业信息
-        syncVipEnterprise();
-        // 同步发布职位
-        syncJob();
-        // 同步人才工作经历、教育经历
-        syncPersonExtend();
-        // 同步感兴趣城市 or 订阅的职位类型
-        syncInterested();
-        // 同步人才简历附件、投递简历
-        syncCv();
+//        // 同步vip企业信息
+//        syncVipEnterprise();
+//        // 同步发布职位
+//        syncJob();
+//        // 同步人才工作经历、教育经历
+//        syncPersonExtend();
+//        // 同步感兴趣城市 or 订阅的职位类型
+//        syncInterested();
+//        // 同步人才简历附件、投递简历
+//        syncCv();
         // 计算工作年限和最高学历
         syncEduAndWork();
     }
@@ -478,108 +478,108 @@ public class MdeOldSyncService {
             mdeUserMapper.insertOrUpdate(insertionDO);
         });
 
-
-        // 企业用户
-        List<OldMdeUser> enterpriseUserList = userList.stream().filter(c -> c.getIdentityFlag().equals("1")).collect(Collectors.toList());
-        enterpriseUserList.forEach(oldMdeUser -> {
-            MdeUserDO enterpriseUser = null;
-            if (StringUtils.hasText(oldMdeUser.getEntPhone())) {
-                // 根据手机号获取用户信息
-                enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
-                if (null == enterpriseUser) {
-                    return;
-                }
-            } else {
-                enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
-                if (null == enterpriseUser) {
-                    return;
-                }
-            }
-
-            // 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
-            EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
-            EnterpriseDO enterpriseInsertionDO = EnterpriseDO.builder()
-                    .id(null == enterpriseDO ? oldMdeUser.getUserCode() : enterpriseDO.getId())
-                    .parentId(0L)
-                    .name(oldMdeUser.getName())
-                    .foreignName(oldMdeUser.getForeignName())
-                    .anotherName(oldMdeUser.getName())
-                    .website(oldMdeUser.getWebsite())
-                    .introduce(oldMdeUser.getIntroduction())
-                    .contact(oldMdeUser.getEntContacts())
-                    .phone(oldMdeUser.getEntPhone())
-                    .logoUrl(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
-                    .businessUrl(null == oldMdeUser.getImage() ? null : url + oldMdeUser.getImage())
-                    .status(MendunerStatusEnum.ENABLE.getStatus())
-                    .build();
-
-
-            // 该企业下的用户信息
-            EnterpriseUserBindDO userDO = enterpriseUserBindMapper.selectOne(
-                    EnterpriseUserBindDO::getUserId, enterpriseUser.getId(),
-                    EnterpriseUserBindDO::getEnterpriseId, oldMdeUser.getUserCode()
-            );
-
-            EnterpriseUserBindDO userInsertionDO = EnterpriseUserBindDO.builder()
-                    .id(null == userDO ? null : userDO.getId())
-                    .enterpriseId(oldMdeUser.getUserCode())
-                    .userId(enterpriseUser.getId())
-                    .name(oldMdeUser.getEntContacts())
-                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
-                    .email(oldMdeUser.getUserName())
-                    .password((passwordEncoder.encode(oldMdeUser.getUserName())))
-                    .phone(oldMdeUser.getEntPhone())
-                    .userType(EnterpriseUserTypeEnum.ADMIN.getType())
-                    .build();
-
-
-            // 企业的地址
-            EnterpriseAddressDO enterpriseAddressDO = enterpriseAddressMapper.selectOne(EnterpriseAddressDO::getEnterpriseId, oldMdeUser.getUserCode());
-
-            EnterpriseAddressDO addressInsertionDO = EnterpriseAddressDO.builder()
-                    .id(null == enterpriseAddressDO ? oldMdeUser.getUserCode() : enterpriseAddressDO.getId())
-                    .enterpriseId(oldMdeUser.getUserCode())
-                    .address(oldMdeUser.getAddDetail())
-                    .build();
-
-            // 优先级:区 > 市 > 省
-            String area = oldMdeUser.getAddrArea();
-            String city = oldMdeUser.getAddrCity();
-            String province = oldMdeUser.getAddrProvince();
-
-            if (StringUtils.hasText(area)) {
-                // 如果有区,则设置区ID
-                addressInsertionDO.setAreaId(Long.valueOf(area));
-            } else if (StringUtils.hasText(city)) {
-                // 如果没有区但有市,则设置市ID
-                addressInsertionDO.setAreaId(Long.valueOf(city));
-            } else if (StringUtils.hasText(province)) {
-                // 如果没有区和市但有省,则设置省ID
-                addressInsertionDO.setAreaId(Long.valueOf(province));
-            } else {
-                // 如果都没有,则设置为null
-                addressInsertionDO.setAreaId(null);
-            }
-
-            if (0 != oldMdeUser.getAddLongitude().compareTo(new BigDecimal("0E-8"))) {
-                addressInsertionDO.setLongitude(String.valueOf(oldMdeUser.getAddLongitude()));
-                addressInsertionDO.setLatitude(String.valueOf(oldMdeUser.getAddLatitude()));
-            }
-
-            setCommon(enterpriseInsertionDO);
-            // 插入企业信息
-            enterpriseMapper.insertOrUpdate(enterpriseInsertionDO);
-
-            setCommon(userInsertionDO);
-            // 插入企业用户绑定信息
-            enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
-
-            setCommon(addressInsertionDO);
-            // 插入企业地址信息
-            enterpriseAddressMapper.insertOrUpdate(addressInsertionDO);
-
-        });
-
+//
+//        // 企业用户
+//        List<OldMdeUser> enterpriseUserList = userList.stream().filter(c -> c.getIdentityFlag().equals("1")).collect(Collectors.toList());
+//        enterpriseUserList.forEach(oldMdeUser -> {
+//            MdeUserDO enterpriseUser = null;
+//            if (StringUtils.hasText(oldMdeUser.getEntPhone())) {
+//                // 根据手机号获取用户信息
+//                enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getPhone, oldMdeUser.getEntPhone());
+//                if (null == enterpriseUser) {
+//                    return;
+//                }
+//            } else {
+//                enterpriseUser = mdeUserMapper.selectOne(MdeUserDO::getUsername, oldMdeUser.getUserName());
+//                if (null == enterpriseUser) {
+//                    return;
+//                }
+//            }
+//
+//            // 借用用户编号作为企业编号匹配唯一键(旧平台只会存在人-企业一对一)
+//            EnterpriseDO enterpriseDO = enterpriseMapper.selectOne(EnterpriseDO::getId, oldMdeUser.getUserCode());
+//            EnterpriseDO enterpriseInsertionDO = EnterpriseDO.builder()
+//                    .id(null == enterpriseDO ? oldMdeUser.getUserCode() : enterpriseDO.getId())
+//                    .parentId(0L)
+//                    .name(oldMdeUser.getName())
+//                    .foreignName(oldMdeUser.getForeignName())
+//                    .anotherName(oldMdeUser.getName())
+//                    .website(oldMdeUser.getWebsite())
+//                    .introduce(oldMdeUser.getIntroduction())
+//                    .contact(oldMdeUser.getEntContacts())
+//                    .phone(oldMdeUser.getEntPhone())
+//                    .logoUrl(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
+//                    .businessUrl(null == oldMdeUser.getImage() ? null : url + oldMdeUser.getImage())
+//                    .status(MendunerStatusEnum.ENABLE.getStatus())
+//                    .build();
+//
+//
+//            // 该企业下的用户信息
+//            EnterpriseUserBindDO userDO = enterpriseUserBindMapper.selectOne(
+//                    EnterpriseUserBindDO::getUserId, enterpriseUser.getId(),
+//                    EnterpriseUserBindDO::getEnterpriseId, oldMdeUser.getUserCode()
+//            );
+//
+//            EnterpriseUserBindDO userInsertionDO = EnterpriseUserBindDO.builder()
+//                    .id(null == userDO ? null : userDO.getId())
+//                    .enterpriseId(oldMdeUser.getUserCode())
+//                    .userId(enterpriseUser.getId())
+//                    .name(oldMdeUser.getEntContacts())
+//                    .avatar(null == oldMdeUser.getHeadPortrait() ? null : url + oldMdeUser.getHeadPortrait())
+//                    .email(oldMdeUser.getUserName())
+//                    .password((passwordEncoder.encode(oldMdeUser.getUserName())))
+//                    .phone(oldMdeUser.getEntPhone())
+//                    .userType(EnterpriseUserTypeEnum.ADMIN.getType())
+//                    .build();
+//
+//
+//            // 企业的地址
+//            EnterpriseAddressDO enterpriseAddressDO = enterpriseAddressMapper.selectOne(EnterpriseAddressDO::getEnterpriseId, oldMdeUser.getUserCode());
+//
+//            EnterpriseAddressDO addressInsertionDO = EnterpriseAddressDO.builder()
+//                    .id(null == enterpriseAddressDO ? oldMdeUser.getUserCode() : enterpriseAddressDO.getId())
+//                    .enterpriseId(oldMdeUser.getUserCode())
+//                    .address(oldMdeUser.getAddDetail())
+//                    .build();
+//
+//            // 优先级:区 > 市 > 省
+//            String area = oldMdeUser.getAddrArea();
+//            String city = oldMdeUser.getAddrCity();
+//            String province = oldMdeUser.getAddrProvince();
+//
+//            if (StringUtils.hasText(area)) {
+//                // 如果有区,则设置区ID
+//                addressInsertionDO.setAreaId(Long.valueOf(area));
+//            } else if (StringUtils.hasText(city)) {
+//                // 如果没有区但有市,则设置市ID
+//                addressInsertionDO.setAreaId(Long.valueOf(city));
+//            } else if (StringUtils.hasText(province)) {
+//                // 如果没有区和市但有省,则设置省ID
+//                addressInsertionDO.setAreaId(Long.valueOf(province));
+//            } else {
+//                // 如果都没有,则设置为null
+//                addressInsertionDO.setAreaId(null);
+//            }
+//
+//            if (0 != oldMdeUser.getAddLongitude().compareTo(new BigDecimal("0E-8"))) {
+//                addressInsertionDO.setLongitude(String.valueOf(oldMdeUser.getAddLongitude()));
+//                addressInsertionDO.setLatitude(String.valueOf(oldMdeUser.getAddLatitude()));
+//            }
+//
+//            setCommon(enterpriseInsertionDO);
+//            // 插入企业信息
+//            enterpriseMapper.insertOrUpdate(enterpriseInsertionDO);
+//
+//            setCommon(userInsertionDO);
+//            // 插入企业用户绑定信息
+//            enterpriseUserBindMapper.insertOrUpdate(userInsertionDO);
+//
+//            setCommon(addressInsertionDO);
+//            // 插入企业地址信息
+//            enterpriseAddressMapper.insertOrUpdate(addressInsertionDO);
+//
+//        });
+//
 
     }
 

+ 6 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java

@@ -219,10 +219,12 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
                         .numOfFragments(10000)
                 )
                 .withSorts(
-                        new SortBuilder[]{
-                                SortBuilders.fieldSort("top").order(SortOrder.DESC),
-                                SortBuilders.fieldSort("updateTime").order(SortOrder.DESC)
-                        }
+                        SortBuilders.fieldSort("name.keyword").order(SortOrder.DESC),
+                        SortBuilders.fieldSort("enterpriseName.keyword").order(SortOrder.DESC),
+                        SortBuilders.fieldSort("enterpriseAnotherName.keyword").order(SortOrder.DESC),
+                        SortBuilders.scoreSort().order(SortOrder.DESC),
+                        SortBuilders.fieldSort("hire").order(SortOrder.DESC),
+                        SortBuilders.fieldSort("updateTime").order(SortOrder.DESC)
                 )
                 .withPageable(pageable)
                 .build();

+ 4 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/util/ESQueryBuildUtils.java

@@ -5,6 +5,7 @@ import com.citu.module.menduner.system.controller.app.jobhunt.job.vo.AppJobAdver
 import com.citu.module.menduner.system.enums.job.JobStatusEnum;
 import com.citu.module.menduner.system.enums.job.PayScopeEnum;
 import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.Operator;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.springframework.util.StringUtils;
 
@@ -29,14 +30,11 @@ public class ESQueryBuildUtils {
                     (
                             reqVO.getContent(),
                             "name",
-                            "content",
-                            "enterpriseAnotherName",
                             "enterpriseName",
+                            "enterpriseAnotherName",
                             "enterpriseTagList",
-                            "tagList",
-                            "developHistory",
-                            "receivedHonors"
-                    )
+                            "tagList"
+                    ).operator(Operator.AND)
             );
         }
         // 企业相关