Authored by gemingdan

搜索模块说明

# 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. 业务逻辑
### 总架构图
![总架构图](http://img10.static.yhbimg.com/yhb-img01/2016/08/30/16/017a1cd088f7c2ee486f710fd34e4e9192.jpg)
### producer模块
生产者模块,分布式部署
![producer模块](http://img10.static.yhbimg.com/yhb-img01/2016/08/30/16/01cfc34b660740808444bd6c6569228236.jpg)
### consumer模块
消费者模块
![consumer模块](http://img10.static.yhbimg.com/yhb-img01/2016/08/30/16/01cf364508c0b7569ffa757c3e767d2b22.jpg)
### adaptor模块
全球购和yoho商品双向适配
![adaptor模块](http://img10.static.yhbimg.com/yhb-img01/2016/08/30/16/0173a69b3081732d607453716440e6db5b.jpg)
### 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<AbstractAggregationBuilder> 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.搜索相关文档地址
公司文档项目:
[跳转](http://git.yoho.cn/tanling/api-interfaces/tree/master/%E6%90%9C%E7%B4%A2)
ES权威指南:
[跳转](http://es.xiaoleilu.com/)
\ No newline at end of file
... ...