kratos 框架商城微服务实战之商品服务 (十一)
本文最后更新于:2 年前
大家好,今天咱们继续写商品服务中的商品查询接口,主要是引入的 Elasticsearch
搜索服务,通过输入关键词来进行商品搜索,废话少说咱们开始
注:竖排 … 代码省略,为了保持文章的篇幅简洁,我会将一些不必要的代码使用竖排的 . 来代替,你在复制本文代码块的时候,切记不要将 . 也一同复制进去。
⚠️ ⚠️ ⚠️ 接下来新增或修改的代码, wire 注入的文件中需要修改的代码,都不会再本文中提及了。例如 biz、data、service 层的修改,自己编写的过程中,千万不要忘记 wire 注入,更不要忘记,执行 make wire 命令,重新生成项目的 wire 文件。具体使用方法可参考 kratos 官方文档 ⚠️ ⚠️ ⚠️
准备工作
增加配置
不特殊强调的话,此篇文章修改的代码都是
goods
服务下的代码
config
目录下新增如下代码:
1 |
|
conf
目录下的conf.proto
文件修改
1 |
|
data
目录下的data.go
文件新增 es 链接服务
1 |
|
data
目录下新增es_goods.go
文件
根据商品的功能,我们来设计我们的mapping
结构,创建对应的索引。这里我把 es__goods
当做一个全新的表 repo ,然后进行常规操作,新建 esGoodsRepo
,把它注入到 data.go
的 wire 里面,前面的代码已经注入了。 ES package 用的是 olivere/elastic
1 |
|
编写接口
实现接口
加入商品的部分信息到 es 服务中,是在商品创建、更新、删除的时候进行操作的,由于咱们前面已经写过了商品的创建,这里只需要在创建成功之后,进一步创建 es 数据就行了。
goods.proto
文件 新增查询方法修改之后别忘记执行 make api 命令
1 |
|
修改创建商品的方法
domain
目录下新增es_goods.go
文件,来进行 repo 和 api 的交互
1 |
|
- 修改
biz/goods.go
,新增插入 es 的逻辑
1 |
|
- 新增
biz/es_goods.go
文件来满足使用 es repo 的需求
1 |
|
data/es_goods.go
实现InsertEsGoods
方法
1 |
|
测试新增 ES 数据
没错还是通过 BloomRPC 工具进行测试。
可以看到成功插入。访问 es 的服务来验证是否插入成功。
执行 es 命令进行查询:
1 |
|
看到结果如图:
成功插入,截图中的 id 跟上图的 id 不一致,是因为我不小心执行两遍一样的创建请求。😂 下面的数据图没截出来。
编写查询请求
service/goods.go
文件新增请求方法
1 |
|
biz/es_goods.go
新增查询方法
1 |
|
商品分类查询的方法,这里就不贴代码了,无非就是先去 biz/category.go 的 categoryRepo interface 定一个一个接口,然后再去 data 下的 categoryRepo 实现方法然后把 ID 返回来
data/es_goods.go
文件下实现GoodsList
方法
1 |
|
data/goods.go
文件下实现GoodsListByIDs
方法
1 |
|
测试查询
这里使用的是 goodsBrief 里面的信息来当关键词构建的请求,其他的效果,请自己进行测试 😂
可以看到结果也出来了。
结束语
本篇只提供了一个商品创建的方法,更新的方法、删除的方法并没有体现,其实原理都一样,处理好自己的逻辑之后,调用 es 不同的命令就行了。
比如新增调用的是 index
1 |
|
更新只需要把 ID 定好调用:update
1 |
|
最近这几天忙成狗,总算是肝出来了 Elasticsearch 进行商品检索,之后准备先不完善商品服务剩余的接口,而是去写订单服务。
这里特别感谢一下一直支持观看此系列的同学,更感谢你们的点赞、分享
感谢您的耐心阅读,动动手指点个赞吧。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!