一、课程搜索需求分析 1.1、需求分析 下图是搜索页面展示: 1、根据分类搜索课程信息。 2、根据关键字搜索课程信息,搜索方式为全文检索,关键字需要匹配课程的名称、 课程内容。 3、根据难度等级搜索课程。 4、搜索结点分页显示。 技术分析: 1、根据关键字搜索,采用MultiMatchQuery,搜索name、description、teachplan 2、根据分类、课程等级搜索采用过虑器实现。 3、分页查询。 4、高亮显示。 1.2、搜索流程 课程管理后台往MySQL添加课程信息,而用户则从ES中搜索,所以需要将MySQL的课程信息同步到索引库中。这个时候就需要一个组件,logstash,是ES官方提供的一款免费的开放的组件 1.3、技术方案分析 使用logstash可以使MySQL和ES之间的数据同步,但是不能实现同步删除,需要在service层里,手工编写代码实现。 二、课程索引(将mysql数据库信息同步到ES中) 2.1、准备coursePub表 时机是:发布课程后,才往索引库中同步。 具体操作是:将mysql中的关于课程的几张表查询出来后的对象,统一封装保存到CoursePub对象中,然后将该对象保存到数据库中。 2.2、logstash(时间戳和定时任务) 如下是logstash的原理: 通过MySQL表中的字段timestamp,第一次查询时的时间,会记录在文件系统中,第二次查的时候,会和timestamp的时间比较,如果文件系统中的时间小于现在查到的时间在这个之间,会添加索引数据。