考察:ElasticSearch使用(索引库、映射、文档等操作)
操作数据为:tb_item表和item索引库(索引库需要自己创建)
搜索相关业务包括:
- 设计索引库数据结构
- 完成数据导入
- 实现搜索栏自动补全功能
- 实现过滤项聚合功能
- 实现基本搜索功能
- 数据同步
设计索引库数据结构
根据搜索页面的需求,判断索引库需要什么字段:
基本字段包括:
- 用于关键字全文检索的字段,比如All,里面包含name、brand、category信息
- 用于自动补全的字段,包括brand、category信息
- 分类
- 品牌
- 价格
- 销量
- id
- name
- 评价数量
- 图片
完成两件事情:
- 根据每个字段的特征,设计索引库结构 mapping。
- 根据索引库结构,设计文档对应的Java类:ItemDoc
数据导入:
要把数据库数据导入到elasticsearch中,包括下面几步:
- 1)将商品微服务中的分页查询商品接口定义为一个FeignClient,放到feign-api模块中
- 2)搜索服务编写一个业务,实现下面功能:
- 调用item-service提供的FeignClient,分页查询商品 PageDTO
- 将查询到的商品封装为一个ItemDoc对象,放入ItemDoc集合
- 将ItemDoc集合批量导入elasticsearch中
- 调用item-service提供的FeignClient,分页查询商品 PageDTO
注意:数据库中的商品数量多达9万多个,不可查询索引导入。一定要分页导入。