Bläddra i källkod

Merge remote-tracking branch 'origin/yxp' into yxp

# Conflicts:
#	src/main/java/com/futu/course/es/Service/impl/ESCourseService.java
杨旭朋 2 veckor sedan
förälder
incheckning
884f64a114

+ 2 - 4
pom.xml

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

+ 71 - 0
src/main/java/com/futu/course/es/Service/impl/ESCourseService.java

@@ -5,14 +5,20 @@ 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 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.delete.DeleteRequest;
 import org.elasticsearch.action.index.IndexRequest;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.action.support.WriteRequest;
+import org.elasticsearch.client.IndicesClient;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.client.indices.CreateIndexRequest;
+import org.elasticsearch.client.indices.CreateIndexResponse;
+import org.elasticsearch.client.indices.GetIndexRequest;
 import org.elasticsearch.common.bytes.BytesReference;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.MatchAllQueryBuilder;
@@ -20,6 +26,8 @@ import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.index.reindex.DeleteByQueryRequest;
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.elasticsearch.xcontent.XContentBuilder;
+import org.elasticsearch.xcontent.XContentFactory;
 import org.elasticsearch.xcontent.XContentType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -89,6 +97,8 @@ public class ESCourseService {
      */
     @Transactional
     public void MysqlInterES() throws IOException {
+//        创建索引
+        this.checkAndCreateIndex();
         // ES删除所有数据
         DeleteByQueryRequest request = new DeleteByQueryRequest("course");
         // 使用 MatchAllQuery 匹配所有文档
@@ -308,4 +318,65 @@ public class ESCourseService {
             esService.save(esCourse);
         }
     }
+    /**
+     * @title: checkAndCreateIndex
+     * @desc:  数据初始化
+     * @params ()
+     * @return: Result
+     * @author: 杨旭朋
+     * @date: 2025/5/8 15:25
+     */
+    public boolean checkAndCreateIndex() throws IOException {
+        IndicesClient indicesClient = client.indices();
+        // 检查索引是否存在
+        GetIndexRequest getIndexRequest = new GetIndexRequest("course");
+        boolean exists = indicesClient.exists(getIndexRequest, RequestOptions.DEFAULT);
+
+        if (!exists) {
+            // 索引不存在,创建索引
+            CreateIndexRequest createRequest = new CreateIndexRequest("course");
+            // 设置索引映射
+            XContentBuilder mappingBuilder = XContentFactory.jsonBuilder();
+            mappingBuilder.startObject()
+                    .startObject("properties")
+                    .startObject("id")
+                    .field("type", "long")
+                    .endObject()
+                    .startObject("name")
+                    .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()
+                    .startObject("category_id")
+                    .field("type", "long")
+                    .endObject()
+                    .startObject("cover_img")
+                    .field("type", "keyword")
+                    .endObject()
+                    .endObject()
+                    .endObject();
+            createRequest.mapping(mappingBuilder);
+
+            CreateIndexResponse createResponse = indicesClient.create(createRequest, RequestOptions.DEFAULT);
+            if (createResponse.isAcknowledged()) {
+                System.out.println("索引course创建成功");
+                return true;
+            } else {
+                System.out.println("索引course创建失败");
+                return false;
+            }
+        }
+        System.out.println("索引course已存在");
+        return true;
+    }
+
 }

+ 4 - 0
src/main/java/com/futu/course/es/controller/ESCourseController.java

@@ -35,4 +35,8 @@ public class ESCourseController {
     public HashSet<ESCourse> SelCourse(@RequestParam("name") String name) throws IOException {
         return esCourseService.SelCourse(name);
     }
+    @GetMapping("checkAndCreateIndex")
+    public boolean checkAndCreateIndex() throws IOException {
+        return esCourseService.checkAndCreateIndex();
+    }
 }

+ 6 - 0
接口文档.txt

@@ -0,0 +1,6 @@
+      方法               参数              返回                 作用           请求         请求路径
+   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