Authored by gemingdan

搜索模块说明

  1 +# 1. 数据库模型
  2 +是同步商品那边的表,表结构不再详细介绍。
  3 +# 2. 代码结构
  4 +### yoho-search-core 搜索服务的公共核心模块,包括dal和core
  5 +* bin maven操作脚本
  6 +* core
  7 +* com.yoho.search.dal.service mybatis服务类
  8 + * index 存放索引相关类
  9 + * config 配置文件实体
  10 + * es es客户端
  11 + * service 索引相关接口与实现
  12 + * task 任务描述和任务分配
  13 + * utils 工具类
  14 +* resources esmapping json文件
  15 +* dal
  16 +* com.yoho.search.dal 实体与mybatis mapper
  17 +* resources mybati配置文件
  18 +### yoho-search-producer 生产者模块
  19 +* bin maven操作脚本
  20 +* deploy 部署脚本
  21 +* producer-web 业务逻辑代码
  22 +* com.yoho.search.canal 阿里mysql数据库binlog的增量订阅&消费组件
  23 + * mq 消息队列FastJson转换器
  24 +* resources spring canal rabbitmq 等配置文件
  25 +### yoho-search-consumer 消费者模块
  26 +* bin maven操作脚本
  27 +* deploy 部署脚本
  28 +* consumer-web 业务逻辑代码
  29 +* com.yoho.search.job 索引重建定时任务
  30 + * mq mq监听器
  31 + * service 索引请求相关controller
  32 +* resources spring等配置文件
  33 +### yoho-search-service 提供搜索服务模块
  34 +* bin maven操作脚本
  35 +* deploy 部署脚本
  36 +* search-service 业务逻辑代码
  37 +* com.yoho.search.restapi 存放controller类
  38 + * service 存放service类
  39 + * vo 存放vo实体
  40 +* search-service -web web壳子,存放spring等配置文件
  41 +### yoho-search-adaptor 全球购和yoho商品适配
  42 +* bin maven操作脚本
  43 +* deploy 部署脚本
  44 +* adaptor-service 业务逻辑代码
  45 +* com.yoho.adaptor.model 存放实体类
  46 + * restapi 存放controller
  47 + * service 存放service
  48 + * util 存放工具类
  49 +* search-adaptor -web web壳子,存放spring等配置文件
  50 +# 3. 业务逻辑
  51 +### 总架构图
  52 +![总架构图](http://img10.static.yhbimg.com/yhb-img01/2016/08/30/16/017a1cd088f7c2ee486f710fd34e4e9192.jpg)
  53 +### producer模块
  54 +生产者模块,分布式部署
  55 +![producer模块](http://img10.static.yhbimg.com/yhb-img01/2016/08/30/16/01cfc34b660740808444bd6c6569228236.jpg)
  56 +### consumer模块
  57 +消费者模块
  58 +![consumer模块](http://img10.static.yhbimg.com/yhb-img01/2016/08/30/16/01cf364508c0b7569ffa757c3e767d2b22.jpg)
  59 +### adaptor模块
  60 +全球购和yoho商品双向适配
  61 +![adaptor模块](http://img10.static.yhbimg.com/yhb-img01/2016/08/30/16/0173a69b3081732d607453716440e6db5b.jpg)
  62 +### service模块
  63 +简单搜索代码逻辑:
  64 +**1. 拼装SearchParam**
  65 +
  66 + - setFilter过滤参数
  67 + - constructFilter ()
  68 + - 使用ES包中的BoolFilterBuilder,常用的方法 must() mustNot() should()
  69 + - 上面的方法中塞入FilterBuilders.termsFilter(field, values)
  70 + - setQuery查询参数
  71 + - QueryBuilders.matchAllQuery()
  72 + - 或--- >constructQuery ()
  73 + - 使用ES包中的MultiMatchQueryBuilder,常用的方法 operator() field()
  74 + - setAggregationBuilders 聚合参数
  75 + - constractAggregations()
  76 + - 使用List<AbstractAggregationBuilder> list
  77 + - 使用AggregationBuilders 常用方法:terms() field() size() subAggregation() order() addRange() addHits addSort()
  78 + - setSearchType 查询类型
  79 +
  80 +**2. 设置查询条数**
  81 +**3. 设置查询结果返回字段**
  82 +**4. 设置排序字段**
  83 +**5. 执行查询 doSearch(indexName, searchParam)**
  84 +**6. 将searchResult转化为map返回--需要转化为需要的结构**
  85 +**7. 返回jsonMap**
  86 +开放RESTAPI接口提供搜索服务,包括搜索数据的封装和处理
  87 +
  88 +### core模块
  89 +包括mybatis服务,调用es客户端逻辑,indexBuilder等底层逻辑
  90 +# 4.搜索相关文档地址
  91 +公司文档项目:
  92 +[跳转](http://git.yoho.cn/tanling/api-interfaces/tree/master/%E6%90%9C%E7%B4%A2)
  93 +
  94 +ES权威指南:
  95 +[跳转](http://es.xiaoleilu.com/)