学习计划安排如下:
首先简单地说明一下这几天需要完成的任务:现在随便去电商网站搜索大致都会出现如下页面:
当然上述页面都是假数据,真的数据需要从数据库中查询到并完成渲染,后面会完成。
这次的数据格式是比较复杂的,它是对应了多张数据表,如果只是对应一张数据表,那简直不要太简单了。
当然关于具体的数据格式分析,文章后面会详细说明到,首先从微服务搭建开始。
可以使用spring脚手架搭建,这个昨天刚说明过,也可以自学创建Maven项目。
当然这不是重点,重点是文章后面的数据格式分析,但因为好久没有创建过微服务了,所以自行搭建做个回顾,其实无外乎核心三步骤。
1pom文件引入依赖
关于依赖,简单地做一个说明。
①eureka客户端依赖
搜索微服务要在注册中心完成注册。
②web启动器
因为项目用的是SpringBoot,所以使用的相关依赖是SpringBoot中的启动器,基本格式都是spring-boot-starter-对应的依赖。
③elasticsearch
搜索的核心依赖了,格式同上。
④feign的使用
这个后面会使用到,到时候会做一个详细的说明。
⑤test依赖
SpringBoot测试相关的依赖,格式同②。
⑥商品微服务实体类
这是我们商品微服务中拆分的实体类,因为经常需要被其它各种微服务调用,所以将商品微服务拆分成了pojo和service两个子模块。
2yam配置文件
①指定服务对应的端口
②给搜索微服务取一个名称。
③elasticsearch相关配置
利用cluster-nodes说明自己装在虚拟机中的elasticsearch对应的ip加上端口号。
④eureka相关配置
3编写启动类
@SpringBootAppplication说明这个类是一个SpringBoot应用启动类。
@EnableDiscoveryClient说明是注册中心客户端,需要向注册中心注册服务。
@EnableFeignClients说明是feign客户端。
看到一个业务需求,首先要考虑的也就是数据格式分析,捋一捋自己的思路:
而我们常用的json格式数据也就是前端和后台数据相互沟通的一个桥梁。
在文章开头就说明过前端相关的数据,现在具体分析下。
1展示数据
观察页面的搜索结果,搜索手机也好,搜索电脑或者其它商品也罢,其结果一般会出现多个商品,也就是上图所示。
页面中展示的一个商品数据就是一个SPU,SPU是多个SKU共有集。
那么SPU和SKU又是什么?
这个在第150天学习笔记中详细讲解过,这里做一个简单的回顾:
但是仔细观察上述页面,选择商品大图下面的小图,商品会跟着变化,也就是SKU中的数据要实现动态变化。
所以我们需要的数据就是一个SPU,同时也需要包含SKU的信息。
2过滤数据
用户选择对应的选项,要过滤出对应的数据展示给用户,所以这些过滤条件都是需要存储在索引库中的,其中包括有:
商品分类,品牌,可以用来搜索的规格参数,以及价格。
这是观察到的最直观的数据。
上述我们分析了一通,分析的是需要保存到索引库中的数据,这样才能利用elasticsearch更好地实现搜索。
并不是说所有的数据都要存储到索引库中。
①展示的数据
搜索结果的基础数据是SPU,所以这个id也就是SPUid
subTitle:商品副标题,也就是商品卖点,比如满100减50这样的促销数据。
SKUS这个上述我们刚分析过,展示给用户看的是一个SPU,但是其需要包含了SKU的数据,就是很多个SKU,当然这里使用json结构的字符串来表示的。
它们都有一个特点:用户不会直接搜索到这些数据,所以不用分词,也不需要索引。
②过滤的数据
我们前面分析了很多,但是忽视了一个问题,就是用户在搜索框中输入的数据。
要知道用户在搜索框中输入的数据是有很多种可能的,可能是品牌,可能是某个参数,所以这里用all来表示全文检索数据。
用户还可以根据商品品牌、分类以及创建时间过滤,分别对应了上述3个字段。
price:商品一般都可以根据不同的价格区间完成过滤,这里用一个price集合来表示。
specs:可以过滤的规格参数有很多,这里使用键值对来表示。