028-从零搭建微服务-搜索服务(二)

写在最前

如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。

源码地址(后端):gitee.com/csps/mingyu...

源码地址(前端):gitee.com/csps/mingyu...

文档地址:gitee.com/csps/mingyu...

搜服服务

更多用法可以参考 Easy-Es 官方文档:www.easy-es.cn/pages/04414...

精确查询

less 复制代码
@GetMapping("/accurate")
@Operation(summary = "精确查询", parameters = { @Parameter(name = "key", description = "标题", required = true) })
public Document accurate(String title) {
  LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
  wrapper.eq(Document::getTitle, title);
  return documentMapper.selectOne(wrapper);
}

测试接口

rust 复制代码
curl -X 'GET' \
  'http://mingyue-gateway:7100/search/crudDemo/accurate?title=%E7%99%BB%E9%AB%98' \
  -H 'accept: */*'

接口返回

css 复制代码
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "id": "1",
    "title": "登高",
    "content": "风急天高猿啸哀,渚清沙白鸟飞回。"
  }
}

模糊查询

less 复制代码
@GetMapping("/fuzzy")
@Operation(summary = "模糊查询", parameters = { @Parameter(name = "key", description = "搜索关键字", required = true) })
public List<Document> fuzzy(String key) {
  LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
  wrapper.like(Document::getTitle, key);
  return documentMapper.selectList(wrapper);
}

测试接口

arduino 复制代码
curl -X 'GET' \
  'http://mingyue-gateway:7100/search/crudDemo/fuzzy?key=%E9%AB%98' \
  -H 'accept: */*' \
  -H 'Authorization: 6H1mlA91zFRa5yEpIl2b2mnCjbG5B44f'

接口返回

css 复制代码
{
  "code": 200,
  "msg": "操作成功",
  "data": [
    {
      "id": "1",
      "title": "登高",
      "content": "风急天高猿啸哀,渚清沙白鸟飞回。"
    }
  ]
}

添加

less 复制代码
@PostMapping("/insert")
public Integer insert(@RequestBody Document document) {
    return documentMapper.insert(document);
}

测试接口

vbnet 复制代码
curl -X 'POST' \
  'http://mingyue-gateway:7100/search/crudDemo/add' \
  -H 'accept: */*' \
  -H 'Authorization: 6H1mlA91zFRa5yEpIl2b2mnCjbG5B44f' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": "2",
  "title": "草",
  "content": "离离原上草,一岁一枯荣。野火烧不尽,春风吹又生。"
}'

接口返回

json 复制代码
{
  "code": 200,
  "msg": "操作成功",
  "data": true
}

更新

less 复制代码
@PutMapping("/update")
public R<Boolean> update(@RequestBody Document document) {
  return R.ok(documentMapper.updateById(document) > 0);
}

测试接口

vbnet 复制代码
curl -X 'PUT' \
  'http://mingyue-gateway:7100/search/crudDemo/update' \
  -H 'accept: */*' \
  -H 'Authorization: 6H1mlA91zFRa5yEpIl2b2mnCjbG5B44f' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": "1",
  "title": "登高",
  "content": "风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。"
}'

接口返回

json 复制代码
{
  "code": 200,
  "msg": "操作成功",
  "data": true
}

删除

less 复制代码
@DeleteMapping("/delete/{id}")
@Operation(summary = "删除文档",
    parameters = { @Parameter(in = ParameterIn.PATH, name = "id", description = "ID", required = true) })
public R<Integer> delete(@PathVariable String id) {
  return R.ok(documentMapper.deleteById(id));
}

测试接口

arduino 复制代码
curl -X 'DELETE' \
  'http://mingyue-gateway:7100/search/crudDemo/delete/2' \
  -H 'accept: */*' \
  -H 'Authorization: 6H1mlA91zFRa5yEpIl2b2mnCjbG5B44f'

接口返回

json 复制代码
{
  "code": 200,
  "msg": "操作成功",
  "data": true
}

小结

搜素服务基础功能已经完成,列一下未来搜索服务的功能吧:

  1. 数据同步,同步业务数据库中数据;
  2. 分页查询示例;
  3. 聚合、排序查询示例;
  4. 分词&模糊匹配示例;
  5. 。。。

搜素服务暂时先停一哈,准备接下来给 mingyue 集成一个消息队列,敬请期待吧~~~

相关推荐
郑州光合科技余经理2 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
IT_陈寒2 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
需要8262 小时前
MySQL 索引 B+ 树与“查询为什么变慢了
java·spring boot·spring·spring cloud·tomcat
一 乐2 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
颜进强3 小时前
01 · NestJS 是什么:用途、解决什么问题、与热门框架对比
前端·后端·ai编程
isfox3 小时前
MapReduce Shuffle 深度解析:数据从 Map 到 Reduce 的完整旅程
后端
颜进强3 小时前
04 · NestJS 依赖注入:你在 `@Module` 写的 providers,和构造参数里那个类型,是怎么"对上"的?
前端·后端·ai编程
vx-程序开发3 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
谁在黄金彼岸3 小时前
Ollama-使用速查
后端