yoho-search说明文档 .md 3.64 KB

1. 数据库模型

是同步商品那边的表,表结构不再详细介绍。

2. 代码结构

yoho-search-core 搜索服务的公共核心模块,包括dal和core

  • bin maven操作脚本
  • core
  • com.yoho.search.dal.service mybatis服务类
    • index 存放索引相关类
    • config 配置文件实体
    • es es客户端
    • service 索引相关接口与实现
    • task 任务描述和任务分配
    • utils 工具类
  • resources esmapping json文件
  • dal
  • com.yoho.search.dal 实体与mybatis mapper
  • resources mybati配置文件 ### yoho-search-producer 生产者模块
  • bin maven操作脚本
  • deploy 部署脚本
  • producer-web 业务逻辑代码
  • com.yoho.search.canal 阿里mysql数据库binlog的增量订阅&消费组件
    • mq 消息队列FastJson转换器
  • resources spring canal rabbitmq 等配置文件 ### yoho-search-consumer 消费者模块
  • bin maven操作脚本
  • deploy 部署脚本
  • consumer-web 业务逻辑代码
  • com.yoho.search.job 索引重建定时任务
    • mq mq监听器
    • service 索引请求相关controller
  • resources spring等配置文件 ### yoho-search-service 提供搜索服务模块
  • bin maven操作脚本
  • deploy 部署脚本
  • search-service 业务逻辑代码
  • com.yoho.search.restapi 存放controller类
    • service 存放service类
    • vo 存放vo实体
  • search-service -web web壳子,存放spring等配置文件 ### yoho-search-adaptor 全球购和yoho商品适配
  • bin maven操作脚本
  • deploy 部署脚本
  • adaptor-service 业务逻辑代码
  • com.yoho.adaptor.model 存放实体类
    • restapi 存放controller
    • service 存放service
    • util 存放工具类
  • search-adaptor -web web壳子,存放spring等配置文件

    3. 业务逻辑

    总架构图

    总架构图

    producer模块

    生产者模块,分布式部署
    producer模块

    consumer模块

    消费者模块
    consumer模块

    adaptor模块

    全球购和yoho商品双向适配
    adaptor模块

    service模块

    简单搜索代码逻辑:
    1. 拼装SearchParam

    • setFilter过滤参数
    • constructFilter ()
    • 使用ES包中的BoolFilterBuilder,常用的方法 must() mustNot() should()
    • 上面的方法中塞入FilterBuilders.termsFilter(field, values)
    • setQuery查询参数
    • QueryBuilders.matchAllQuery()
    • 或--- >constructQuery ()
    • 使用ES包中的MultiMatchQueryBuilder,常用的方法 operator() field()
    • setAggregationBuilders 聚合参数
    • constractAggregations()
    • 使用List list
    • 使用AggregationBuilders 常用方法:terms() field() size() subAggregation() order() addRange() addHits addSort()
    • setSearchType 查询类型

2. 设置查询条数
3. 设置查询结果返回字段
4. 设置排序字段
5. 执行查询 doSearch(indexName, searchParam)
6. 将searchResult转化为map返回--需要转化为需要的结构
7. 返回jsonMap
开放RESTAPI接口提供搜索服务,包括搜索数据的封装和处理

core模块

包括mybatis服务,调用es客户端逻辑,indexBuilder等底层逻辑

4.搜索相关文档地址

公司文档项目: 跳转

ES权威指南: 跳转