|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|