杨旭朋 2 viikkoa sitten
vanhempi
commit
e858b6beaf

+ 4 - 2
pom.xml

@@ -36,6 +36,7 @@
             <version>0.11.5</version>
             <scope>runtime</scope>
         </dependency>
+
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
@@ -44,7 +45,6 @@
         <dependency>
             <groupId>javax.validation</groupId>
             <artifactId>validation-api</artifactId>
-            <version>2.0.1.Final</version> <!-- 指定版本 -->
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
@@ -79,6 +79,7 @@
             <artifactId>hutool-all</artifactId>
             <version>5.8.16</version>
         </dependency>
+
         <dependency>
             <groupId>com.mysql</groupId>
             <artifactId>mysql-connector-j</artifactId>
@@ -89,6 +90,7 @@
             <artifactId>lombok</artifactId>
             <optional>true</optional>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
@@ -142,7 +144,7 @@
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+            <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
     </dependencies>
     <dependencyManagement>

+ 3 - 2
src/main/java/com/futu/course/es/Service/ESService.java

@@ -1,8 +1,9 @@
 package com.futu.course.es.Service;
 
-import com.futu.course.es.domain.ESCourse;
+
+import com.futu.course.es.domain.MongoDBCourse;
 import org.springframework.data.mongodb.repository.MongoRepository;
 
-public interface ESService extends MongoRepository<ESCourse,String> {
+public interface ESService extends MongoRepository<MongoDBCourse,String> {
 
 }

+ 30 - 31
src/main/java/com/futu/course/es/Service/impl/ESCourseService.java

@@ -5,9 +5,11 @@ import com.futu.course.course.domain.Course;
 import com.futu.course.course.service.impl.CourseServiceImpl;
 import com.futu.course.es.Service.ESService;
 import com.futu.course.es.domain.ESCourse;
+import com.futu.course.es.domain.MongoDBCourse;
 import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
 import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
 import org.elasticsearch.action.bulk.BulkRequest;
+import org.elasticsearch.action.bulk.BulkResponse;
 import org.elasticsearch.action.delete.DeleteRequest;
 import org.elasticsearch.action.index.IndexRequest;
 import org.elasticsearch.action.search.SearchRequest;
@@ -107,15 +109,18 @@ public class ESCourseService {
         // 查询数据库中所有的课程
         List<Course> list = courseService.list();
         List<ESCourse> esCourses = new ArrayList<>();
+
         // 初始化数据
         for (Course course : list) {
+            System.out.println(course);
             ESCourse esCourse = new ESCourse();
-            esCourse.setId(String.valueOf(course.getId()));
+            esCourse.setId(Long.valueOf(String.valueOf(course.getId())));
             esCourse.setName(course.getTitle());
             esCourse.setCategoryId(Long.valueOf(course.getCategoryId()));
             esCourse.setCoverImg(course.getCoverImg());
             esCourse.setPrice(course.getPrice());
             esCourses.add(esCourse);
+            System.out.println(esCourse);
         }
         // 将数据添加到ES中
         BulkRequest bulkRequest = new BulkRequest("course");
@@ -126,6 +131,7 @@ public class ESCourseService {
                     .source(string, XContentType.JSON);
             bulkRequest.add(indexRequest);
         }
+        BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
     }
 
     /**
@@ -144,7 +150,7 @@ public class ESCourseService {
         if (categoryId != 0) {
             BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
                     // 创建条件在条件中添加 term 查询
-                    .must(QueryBuilders.termQuery("category_id", categoryId));
+                    .must(QueryBuilders.termQuery("categoryId", categoryId));
             // 将搜索容器添加搜索条件
             searchSourceBuilder.query(boolQueryBuilder);
             // 添加数据为搜索容器
@@ -161,9 +167,9 @@ public class ESCourseService {
                     // 处理可能的类型转换问题
                     Object idObj = sourceAsMap.get("id");
                     if (idObj instanceof Integer) {
-                        esCourse.setId(String.valueOf(((Integer) idObj).longValue()));
+                        esCourse.setId(Long.valueOf(String.valueOf(((Integer) idObj).longValue())));
                     } else if (idObj instanceof Long) {
-                        esCourse.setId(String.valueOf((Long) idObj));
+                        esCourse.setId(Long.valueOf(String.valueOf((Long) idObj)));
                     }
 
                     esCourse.setName((String) sourceAsMap.get("name"));
@@ -173,14 +179,14 @@ public class ESCourseService {
                         esCourse.setPrice(BigDecimal.valueOf(((Number) priceObj).doubleValue()));
                     }
 
-                    Object categoryIdObj = sourceAsMap.get("category_id");
+                    Object categoryIdObj = sourceAsMap.get("categoryId");
                     if (categoryIdObj instanceof Integer) {
                         esCourse.setCategoryId(((Integer) categoryIdObj).longValue());
                     } else if (categoryIdObj instanceof Long) {
                         esCourse.setCategoryId((Long) categoryIdObj);
                     }
 
-                    esCourse.setCoverImg((String) sourceAsMap.get("cover_img"));
+                    esCourse.setCoverImg((String) sourceAsMap.get("coverImg"));
                     esCourses.add(esCourse);
                 }
             } catch (IOException e) {
@@ -204,9 +210,9 @@ public class ESCourseService {
                 // 处理可能的类型转换问题
                 Object idObj = sourceAsMap.get("id");
                 if (idObj instanceof Integer) {
-                    esCourse.setId(String.valueOf(((Integer) idObj).longValue()));
+                    esCourse.setId(Long.valueOf(String.valueOf(((Integer) idObj).longValue())));
                 } else if (idObj instanceof Long) {
-                    esCourse.setId(String.valueOf((Long) idObj));
+                    esCourse.setId(Long.valueOf(String.valueOf((Long) idObj)));
                 }
 
                 esCourse.setName((String) sourceAsMap.get("name"));
@@ -216,14 +222,14 @@ public class ESCourseService {
                     esCourse.setPrice(BigDecimal.valueOf(((Number) priceObj).doubleValue()));
                 }
 
-                Object categoryIdObj = sourceAsMap.get("category_id");
+                Object categoryIdObj = sourceAsMap.get("categoryId");
                 if (categoryIdObj instanceof Integer) {
                     esCourse.setCategoryId(((Integer) categoryIdObj).longValue());
                 } else if (categoryIdObj instanceof Long) {
                     esCourse.setCategoryId((Long) categoryIdObj);
                 }
 
-                esCourse.setCoverImg((String) sourceAsMap.get("cover_img"));
+                esCourse.setCoverImg((String) sourceAsMap.get("coverImg"));
                 esCourses.add(esCourse);
             }
             // 处理搜索结果
@@ -264,9 +270,9 @@ public class ESCourseService {
             // 处理可能的类型转换问题
             Object idObj = sourceAsMap.get("id");
             if (idObj instanceof Integer) {
-                esCourse.setId(String.valueOf(((Integer) idObj).longValue()));
+                esCourse.setId(Long.valueOf(String.valueOf(((Integer) idObj).longValue())));
             } else if (idObj instanceof Long) {
-                esCourse.setId(String.valueOf((Long) idObj));
+                esCourse.setId(Long.valueOf(String.valueOf((Long) idObj)));
             }
 
             esCourse.setName((String) sourceAsMap.get("name"));
@@ -276,14 +282,14 @@ public class ESCourseService {
                 esCourse.setPrice(BigDecimal.valueOf(((Number) priceObj).doubleValue()));
             }
 
-            Object categoryIdObj = sourceAsMap.get("category_id");
+            Object categoryIdObj = sourceAsMap.get("categoryId");
             if (categoryIdObj instanceof Integer) {
                 esCourse.setCategoryId(((Integer) categoryIdObj).longValue());
             } else if (categoryIdObj instanceof Long) {
                 esCourse.setCategoryId((Long) categoryIdObj);
             }
 
-            esCourse.setCoverImg((String) sourceAsMap.get("cover_img"));
+            esCourse.setCoverImg((String) sourceAsMap.get("coverImg"));
             esCourses.add(esCourse);
         }
         this.SaveMongoDB(name);
@@ -298,24 +304,24 @@ public class ESCourseService {
      * @date: 2025/5/8 9:14
      */
     public void SaveMongoDB(String name){
-        List<ESCourse> all = esService.findAll();
+        List<MongoDBCourse> all = esService.findAll();
         int i = 0;
-        for (ESCourse esCourse : all) {
-            if (esCourse.getName().equals(name)){
-                ESCourse byId = esService.findById(esCourse.getId().toString()).get();
+        for (MongoDBCourse esCourse : all) {
+            if (esCourse.getName().equals(name)&&esCourse.getUid().equals(1L)){
+                MongoDBCourse byId = esService.findById(esCourse.getId().toString()).get();
                 byId.setCreateTime(new Date());
                 esService.save(byId);
                 i++;
             }
         }
         if (i == 0){
-            ESCourse esCourse = new ESCourse();
+            MongoDBCourse mongoDBCourse = new MongoDBCourse();
             String string = UUID.randomUUID().toString();
-            esCourse.setId(string);
-            esCourse.setName(name);
-            esCourse.setCreateTime(new Date());
-            esCourse.setUid(1L);
-            esService.save(esCourse);
+            mongoDBCourse.setId(string);
+            mongoDBCourse.setName(name);
+            mongoDBCourse.setCreateTime(new Date());
+            mongoDBCourse.setUid(1L);
+            esService.save(mongoDBCourse);
         }
     }
     /**
@@ -346,13 +352,6 @@ public class ESCourseService {
                     .field("type", "text")
                     .field("analyzer", "ik_max_word")
                     .endObject()
-                    .startObject("uid")
-                    .field("type", "long")
-                    .endObject()
-                    .startObject("create_time")
-                    .field("type", "date")
-                    .field("format", "yyyy-MM-dd HH:mm:ss")
-                    .endObject()
                     .startObject("price")
                     .field("type", "float")
                     .endObject()

+ 7 - 11
src/main/java/com/futu/course/es/domain/ESCourse.java

@@ -3,32 +3,30 @@ package com.futu.course.es.domain;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.data.annotation.Id;
 
+import org.springframework.data.elasticsearch.annotations.Document;
 import org.springframework.data.elasticsearch.annotations.Field;
 import org.springframework.data.elasticsearch.annotations.FieldType;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.springframework.data.mongodb.core.mapping.Document;
+
 
 import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
 // 对 ES 中的 course 进行映射
-@Document("course")
+@Document(indexName = "course")
 @NoArgsConstructor
 @AllArgsConstructor
 public class ESCourse {
     // 用于 Elasticsearch 的主键注解
     @Id
-    @Field(type = FieldType.Long)
-    private String id;
+    @Field(name = "id",type = FieldType.Long)
+    private Long id;
 
     @Field(name = "name", type = FieldType.Text, analyzer = "ik_max_word")
     private String name;
-
-    @Field(name = "uid", type = FieldType.Long)
-    private Long uid;
     @Field(name = "price")
     private BigDecimal price;
     @Field(name = "category_id")
@@ -36,7 +34,5 @@ public class ESCourse {
     @Field(name = "cover_img")
     private String coverImg;
 
-    @Field(name = "create_time", type = FieldType.Date, format = {}, pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date createTime;
-}    
+
+}

+ 37 - 0
src/main/java/com/futu/course/es/domain/MongoDBCourse.java

@@ -0,0 +1,37 @@
+package com.futu.course.es.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.Field;
+import org.springframework.data.elasticsearch.annotations.FieldType;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+@Data
+// 对 ES 中的 course 进行映射
+    @Document("course")
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public class MongoDBCourse {
+        // 用于 Elasticsearch 的主键注解
+        @Id
+        @Field(name = "id",type = FieldType.Text)
+        private String id;
+
+        @Field(name = "name", type = FieldType.Text, analyzer = "ik_max_word")
+        private String name;
+
+        @Field(name = "uid", type = FieldType.Long)
+        private Long uid;
+
+        @Field(name = "create_time", type = FieldType.Date, format = {}, pattern = "yyyy-MM-dd HH:mm:ss")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+        private Date createTime;
+    }
+

+ 0 - 6
接口文档.txt

@@ -1,6 +0,0 @@
-      方法               参数              返回                 作用           请求         请求路径
-   search             String name    ArrayList<String>       搜索指引         post     /EsCourse/search
-   MysqlInterES          无                无              同步mysql中的数据   get      /EsCourse/MysqlInterES
-   CourseList         int categoryId  HashSet<ESCourse>    课程分类查询所有    Post     /EsCourse/CourseList
-   SelCourse          String name     HashSet<ESCourse>     课程的搜索        Post     /EsCourse/SelCourse
-   checkAndCreateIndex  无              boolean           ES索引结构初始化     Get      /EsCourse/checkAndCreateIndex