|
@@ -1,8 +1,9 @@
|
|
|
-package com.futu.course.es.Service;
|
|
|
+package com.futu.course.es.Service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
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.bulk.BulkRequest;
|
|
|
import org.elasticsearch.action.delete.DeleteRequest;
|
|
@@ -39,6 +40,8 @@ public class ESCourseService {
|
|
|
RestHighLevelClient client;
|
|
|
@Autowired
|
|
|
CourseServiceImpl courseService;
|
|
|
+ @Autowired
|
|
|
+ ESService esService;
|
|
|
|
|
|
/**
|
|
|
* @title: search
|
|
@@ -97,7 +100,7 @@ public class ESCourseService {
|
|
|
// 初始化数据
|
|
|
for (Course course : list) {
|
|
|
ESCourse esCourse = new ESCourse();
|
|
|
- esCourse.setId(course.getId());
|
|
|
+ esCourse.setId(String.valueOf(course.getId()));
|
|
|
esCourse.setName(course.getTitle());
|
|
|
esCourse.setCategoryId(Long.valueOf(course.getCategoryId()));
|
|
|
esCourse.setCoverImg(course.getCoverImg());
|
|
@@ -148,9 +151,9 @@ public class ESCourseService {
|
|
|
// 处理可能的类型转换问题
|
|
|
Object idObj = sourceAsMap.get("id");
|
|
|
if (idObj instanceof Integer) {
|
|
|
- esCourse.setId(((Integer) idObj).longValue());
|
|
|
+ esCourse.setId(String.valueOf(((Integer) idObj).longValue()));
|
|
|
} else if (idObj instanceof Long) {
|
|
|
- esCourse.setId((Long) idObj);
|
|
|
+ esCourse.setId(String.valueOf((Long) idObj));
|
|
|
}
|
|
|
|
|
|
esCourse.setName((String) sourceAsMap.get("name"));
|
|
@@ -191,9 +194,9 @@ public class ESCourseService {
|
|
|
// 处理可能的类型转换问题
|
|
|
Object idObj = sourceAsMap.get("id");
|
|
|
if (idObj instanceof Integer) {
|
|
|
- esCourse.setId(((Integer) idObj).longValue());
|
|
|
+ esCourse.setId(String.valueOf(((Integer) idObj).longValue()));
|
|
|
} else if (idObj instanceof Long) {
|
|
|
- esCourse.setId((Long) idObj);
|
|
|
+ esCourse.setId(String.valueOf((Long) idObj));
|
|
|
}
|
|
|
|
|
|
esCourse.setName((String) sourceAsMap.get("name"));
|
|
@@ -217,4 +220,92 @@ public class ESCourseService {
|
|
|
}
|
|
|
return esCourses;
|
|
|
}
|
|
|
+ /**
|
|
|
+ * @title: SelCourse
|
|
|
+ * @desc: 搜索并将搜索记录写入到MongoDB中
|
|
|
+ * @params ()
|
|
|
+ * @return: Result
|
|
|
+ * @author: 杨旭朋
|
|
|
+ * @date: 2025/5/8 8:35
|
|
|
+ */
|
|
|
+ public HashSet<ESCourse> SelCourse(String name) throws IOException {
|
|
|
+ // 创建搜索请求
|
|
|
+ SearchRequest searchRequest = new SearchRequest("course");
|
|
|
+ // 创建搜索容器
|
|
|
+ SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
|
|
|
+ // 创建布尔查询器
|
|
|
+ BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
|
|
|
+ // 创建条件,在条件中添加 match 查询,使用 ik 分词器
|
|
|
+ .must(QueryBuilders.matchQuery("name", name));
|
|
|
+ // 将搜索容器添加搜索条件
|
|
|
+ searchSourceBuilder.query(boolQueryBuilder);
|
|
|
+ // 添加数据为搜索容器
|
|
|
+ searchRequest.source(searchSourceBuilder);
|
|
|
+ // 执行请求,并获取响应
|
|
|
+ SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
|
|
|
+ System.out.println(searchRequest);
|
|
|
+ // 返回搜索结果
|
|
|
+ SearchHit[] hits = search.getHits().getHits();
|
|
|
+ HashSet<ESCourse> esCourses = new HashSet<>();
|
|
|
+ for (SearchHit hit : hits) {
|
|
|
+ ESCourse esCourse = new ESCourse();
|
|
|
+ Map<String, Object> sourceAsMap = hit.getSourceAsMap();
|
|
|
+
|
|
|
+ // 处理可能的类型转换问题
|
|
|
+ Object idObj = sourceAsMap.get("id");
|
|
|
+ if (idObj instanceof Integer) {
|
|
|
+ esCourse.setId(String.valueOf(((Integer) idObj).longValue()));
|
|
|
+ } else if (idObj instanceof Long) {
|
|
|
+ esCourse.setId(String.valueOf((Long) idObj));
|
|
|
+ }
|
|
|
+
|
|
|
+ esCourse.setName((String) sourceAsMap.get("name"));
|
|
|
+
|
|
|
+ Object priceObj = sourceAsMap.get("price");
|
|
|
+ if (priceObj instanceof Number) {
|
|
|
+ esCourse.setPrice(BigDecimal.valueOf(((Number) priceObj).doubleValue()));
|
|
|
+ }
|
|
|
+
|
|
|
+ Object categoryIdObj = sourceAsMap.get("category_id");
|
|
|
+ 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"));
|
|
|
+ esCourses.add(esCourse);
|
|
|
+ }
|
|
|
+ this.SaveMongoDB(name);
|
|
|
+ return esCourses;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * @title: SaveMongoDB
|
|
|
+ * @desc: 保存聊天记录到MongoDB中
|
|
|
+ * @params String name
|
|
|
+ * @return: void
|
|
|
+ * @author: 杨旭朋
|
|
|
+ * @date: 2025/5/8 9:14
|
|
|
+ */
|
|
|
+ public void SaveMongoDB(String name){
|
|
|
+ List<ESCourse> all = esService.findAll();
|
|
|
+ int i = 0;
|
|
|
+ for (ESCourse esCourse : all) {
|
|
|
+ if (esCourse.getName().equals(name)){
|
|
|
+ ESCourse byId = esService.findById(esCourse.getId().toString()).get();
|
|
|
+ byId.setCreateTime(new Date());
|
|
|
+ esService.save(byId);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (i == 0){
|
|
|
+ ESCourse esCourse = new ESCourse();
|
|
|
+ String string = UUID.randomUUID().toString();
|
|
|
+ esCourse.setId(string);
|
|
|
+ esCourse.setName(name);
|
|
|
+ esCourse.setCreateTime(new Date());
|
|
|
+ esCourse.setUid(1L);
|
|
|
+ esService.save(esCourse);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|