电商(8)
电商第八天:
回顾昨天:
分布式锁: set(key,value,nx,px,timeout)
redisson
es 安装
中文词库
java 操作es !
开启项目的时候:
service elasticsearch start
nohup ./kibana &
全文检索:1. 商品的上架 将商品的数据从mysql ---->es 中!1.1 用户在前台页面进行检索的时候,数据应该直接来自于es!1.2 因为es 中没有相应商品数据,所以我们需要将商品数据写入es!1.3 如何写入数据?ES 的dsl 语句PUT /INDEX/TYPE/ID{}Index : 如何定义? gmallType :如何定义? SkuInfo {Document Field}制作 mappingmapping 中对应的数据可以从用户检索之后展示的数据!skuInfo 中的默认图片,price,skuName,skuId商品名称,需要分词,并高亮平台属性值,三级分类Id,进行过滤显示:skuInfo 中的默认图片,price,skuName,skuId需要做一个聚合功能{平台属性值Id}PUT gmall{"mappings": {"SkuInfo":{"properties": {"id":{"type": "keyword", "index": false},"price":{"type": "double"},"skuName":{"type": "text","analyzer": "ik_max_word"},"catalog3Id":{"type": "keyword"},"skuDefaultImg":{"type": "keyword","index": false},"skuAttrValueList":{"properties": {"valueId":{"type":"keyword"}}}}}}}ID :又是谁?skuIdPUT /gmall/SkuInfo/33{}PUT /gmall/SkuInfo/34{}应该适应JestClient 将数据保存到es 中!功能开发流程:mysql ----> es 上架设计到的表 skuInfo ,skuAttrValuebean ;不需要mapper:间接需要service,service.impl,controllerSkuLsInfo 从数据库查询出来的数据封装到当前实体类中,该实体类正好对应的是 /gmall/SkuInfo es中控制器写在哪? gmall-manage-web2. 手动拼写 dsl 语句,并从es 中将数据进行查询出来查询两个入口京东:三级分类Id https://list.jd.com/list.html?cat=9987,653,655:全文检索 https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&suggest=1.his.0.0&wq=&pvid=5f56532a756f438dbc5096c7f826fca4我们项目分析:@ReuqestMapping("list.html")public String search01(String catalog3Id){// catalog3Id 查询对应的商品 保存到作用域,前台渲染!return "search";}@ReuqestMapping("list.html")public String search02(String keyword){// keyword 查询对应的商品 保存到作用域,前台渲染!return "search";}@ReuqestMapping("list.html")public String search03(String... valueId){// valueId 查询对应的商品 保存到作用域,前台渲染!return "search";}@ReuqestMapping("list.html")public String search01(Param param){// param 查询对应的商品 保存到作用域,前台渲染!return "search";}// 输入参数的实体类封装class Param{String catalog3Id,String keyword,List valueId}一个是三级分类Id:catalog3Id , valueId另一个全文检索入口:keyword=skuName, valueIddsl 语句重点包含哪些内容:1. 先过滤在查询skuNamecatalog3Id , valueId2. 分页"from": 1 从第几条数据开始查询"size": 2 表示每页显示的条数3. 高亮显示"highlight": {"pre_tags": [""],"post_tags": [""], "fields": {"skuName": {}}4. 排序"sort": [{ "price": {"order": "asc"}}]5. 聚合"aggs": {"groupby_attr": {"terms": {"field": "skuAttrValueList.valueId"}}} 完整的dsl 语句GET /gmall/SkuInfo/_search{"query": {"bool": {"filter": [{"term": {"catalog3Id": "61"}},{"term": {"skuAttrValueList.valueId": "81"}}],"must": [{"match": {"skuName": "一代米"}}]}},"from": 0, "size": 3, "highlight": {"pre_tags": [""],"post_tags": [""], "fields": {"skuName": {}}}, "sort": [{ "hotScore": {"order": "asc"}}], "aggs": {"groupby_attr": {"terms": {"field": "skuAttrValueList.valueId"}}}}-------------------------------------------------制作入力参数实体类输入对象:SkuLsParams输出对象:SkuLsResult-------------------从新制作一个商品,将前面的所有业务梳理一下-----------------------------黑色 6+64金色 8+128黑色 64+16. 使用java 语言动态生成dsl 语句!bean,mapper,service,service.impl,controller用户输入的参数:SkuLsParamsJestClientservice:7. 新建一个项目gmall-list-web8. 修改虚拟域名upstream manage.gmall.com {server 192.168.67.1:8082;}
server {listen 80;server_name manage.gmall.com;location /{proxy_pass http://manage.gmall.com;}}upstream list.gmall.com{server 192.168.67.1:8086;}server {listen 80;server_name list.gmall.com;location /{proxy_pass http://list.gmall.com;}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
