yoho-search说明文档 .md
3.65 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模块
consumer模块
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权威指南: 跳转