Java的新项目学成在线笔记-day15(六)

2.3.4 启动logstash.bat 
启动logstash.bat采集teachplan_media_pub中的数据,向ES写入索引。

[AppleScript] 纯文本查看 复制代码

?

1

logstash.bat ‐f ../config/mysql_course_media.conf


2.4 搜索服务查询课程媒资接口 
2.4.1 需求分析 
搜索服务提供查询课程媒资接口,此接口供学习服务调用。 2.4.2 Api 
在课程搜索包下定义Api
 

[AppleScript] 纯文本查看 复制代码

?

1

2

@ApiOperation("根据课程计划查询媒资信息")

 public TeachplanMediaPub getmedia(String teachplanId);


2.4.3 Service 
1、配置课程计划媒资索引库等信息
在application.yml中配置
 

[AppleScript] 纯文本查看 复制代码

?

1

2

3

4

5

6

xuecheng: 

 elasticsearch:  

  media:  

    index: xc_course_media 

     type: doc  

   source_field: courseid,media_id,media_url,teachplan_id,media_fileoriginalname


2、service方法开发 在课程搜索服务中定义课程媒资查询接口,为了适应后续需求,service参数定义为数组,可一次查询多个课程计划 的媒资信息。
 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

//根据课程计划查询媒资信息 public QueryResponseResult<TeachplanMediaPub> getmedia(String[] teachplanIds){     //设置索引     SearchRequest searchRequest = new SearchRequest(media_index);   

 //设置类型     searchRequest.types(media_type);  

  SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  

  //source源字段过虑 

   String[] source_fields = media_source_field.split(",");

    searchSourceBuilder.fetchSource(source_fields, new String[]{});

    //查询条件,根据课程计划id查询(可传入多个id)  

  searchSourceBuilder.query(QueryBuilders.termsQuery("teachplan_id", teachplanIds));     searchRequest.source(searchSourceBuilder);     SearchResponse searchResponse = null; 

   try {     

   //执行搜索

 searchResponse = restHighLevelClient.search(searchRequest)

   } catch (IOException e) {  

      e.printStackTrace();

    }  

  //获取搜索结果  

  SearchHits hits = searchResponse.getHits();  

  SearchHit[] searchHits = hits.getHits()

   Map<String,CoursePub> map = new HashMap<>();  

  //数据列表     List<TeachplanMediaPub> teachplanMediaPubList = new ArrayList<>();  

  for (SearchHit hit : searchHits) {   

     TeachplanMediaPub teachplanMediaPub  =new TeachplanMediaPub();  

      Map<String, Object> sourceAsMap = hit.getSourceAsMap();    

    //取出课程计划媒资信息     

   String courseid = (String) sourceAsMap.get("courseid");    

   String media_id = (String) sourceAsMap.get("media_id");  

      String media_url = (String) sourceAsMap.get("media_url");  

      String teachplan_id = (String) sourceAsMap.get("teachplan_id")

       String media_fileoriginalname = (String) sourceAsMap.get("media_fileoriginalname");   

       teachplanMediaPub.setCourseId(courseid);     

   teachplanMediaPub.setMediaUrl(media_url);    

    teachplanMediaPub.setMediaFileOriginalName(media_fileoriginalname);    

    teachplanMediaPub.setMediaId(media_id);     

   teachplanMediaPub.setTeachplanId(teachplan_id);     

     //将数据加入列表     

   teachplanMediaPubList.add(teachplanMediaPub);

    }   

   //构建返回课程媒资信息对象 

   QueryResult<TeachplanMediaPub> queryResult = new QueryResult<>()

   queryResult.setList(teachplanMediaPubList);  

  QueryResponseResult<TeachplanMediaPub> queryResponseResult = new

 QueryResponseResult<TeachplanMediaPub>(CommonCode.SUCCESS,queryResult);  

  return queryResponseResult;   }


2.4.4 Controller 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

        searchResponse = restHighLevelClient.search(searchRequest);  

  } catch (IOException e) { 

       e.printStackTrace()

   }  

  //获取搜索结果 

   SearchHits hits = searchResponse.getHits()

   SearchHit[] searchHits = hits.getHits()

   Map<String,CoursePub> map = new HashMap<>();  

  //数据列表  

  List<TeachplanMediaPub> teachplanMediaPubList = new ArrayList<>();  

  for (SearchHit hit : searchHits) {  

      TeachplanMediaPub teachplanMediaPub  =new TeachplanMediaPub();   

     Map<String, Object> sourceAsMap = hit.getSourceAsMap();  

      //取出课程计划媒资信息    

    String courseid = (String) sourceAsMap.get("courseid");  

      String media_id = (String) sourceAsMap.get("media_id");   

     String media_url = (String) sourceAsMap.get("media_url");  

      String teachplan_id = (String) sourceAsMap.get("teachplan_id");   

     String media_fileoriginalname = (String) sourceAsMap.get("media_fileoriginalname");  

        teachplanMediaPub.setCourseId(courseid);    

    teachplanMediaPub.setMediaUrl(media_url);    

    teachplanMediaPub.setMediaFileOriginalName(media_fileoriginalname)

       teachplanMediaPub.setMediaId(media_id)

       teachplanMediaPub.setTeachplanId(teachplan_id);    

      //将数据加入列表   

     teachplanMediaPubList.add(teachplanMediaPub);

    }  

    //构建返回课程媒资信息对象   

 QueryResult<TeachplanMediaPub> queryResult = new QueryResult<>();

    queryResult.setList(teachplanMediaPubList);    

QueryResponseResult<TeachplanMediaPub>

 queryResponseResult = new

 QueryResponseResult<TeachplanMediaPub>(CommonCode.SUCCESS,queryResult);  

  return queryResponseResult;

  }

@Override @GetMapping(value="/getmedia/{teachplanId}") public TeachplanMediaPub getmedia(@PathVariable("teachplanId") String teachplanId) {  

  //将课程计划id放在数组中,为调用service作准备  

  String[] teachplanIds = new String[]{teachplanId};   

 //通过service查询ES获取课程媒资信息  

  QueryResponseResult<TeachplanMediaPub> mediaPubQueryResponseResult =  esCourseService.getmedia(teachplanIds);   

 QueryResult<TeachplanMediaPub> queryResult = mediaPubQueryResponseResult.getQueryResult()

   if(queryResult!=null

 && queryResult.getList()!=null        

    && queryResult.getList().size()>0){  

      //返回课程计划对应课程媒资 

       return queryResult.getList().get(0);

     }    

return new TeachplanMediaPub(); }


2.4.5 测试 
使用swagger-ui和postman测试课程媒资查询接口。

你可能感兴趣的:(JAVA)