day78-商城业务-商品上架-sku在es中存储模型分析

18 篇文章 0 订阅
12 篇文章 0 订阅

1.会在日志与商品全文检索中使用到es,日志部分后面再说 下面会说 商品的全文检索

2.如下全文检索将会用es而不是mysql,为什么呢

1.mysql全文检索没有es强大

2.es中数据保存在内存中,性能会比mysql优很多,当内存不够的时候咋办呢,分片,支持分布式,容量无限,

但是设计的时候还是尽量要节省,因为内存产品比硬盘要贵很多

3.存储模型的分析与确定

 将数据从mysql保存到es称为上架

上架的商品才可以在网站上被展示与检索

以下是一个我们检索大致需要的属性的列举,第一种每一条数据中sku与attrs放在同一对象中,

第二条sku与attrs 封装成了不同对象,两者的优劣分析:

第一种会有数据冗余,但是不用进行二次检索,第二种没有数据冗余但要进行二次检索。

最终我们是采用第一种,使用空间换时间的方式,何况使用第二种当数据量大时会极大的消耗运行内存引起各种问题


 最终数据模型具体确定为如下, kibana中执行

PUT product
{
  "mappings": {
    "properties": {
      "skuId": {
        "type": "long"
      },
      "spuId": {
        "type": "keyword"
      },
      "skuTitle": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "skuPrice": {
        "type": "keyword"
      },
      "skuImg": {
        "type": "keyword",
        "index": false,
        "doc_values": false
      },
      "saleCount": {
        "type": "long"
      },
      "hasStock": {
        "type": "boolean"
      },
      "hotScore": {
        "type": "long"
      },
      "brandId": {
        "type": "long"
      },
      "catelogId": {
        "type": "long"
      },
      "brandName": {
        "type": "keyword",
        "index": false,
        "doc_values": false
      },
      "brandImg": {
        "type": "keyword",
        "index": false,
        "doc_values": false
      },
      "catelogName": {
        "type": "keyword",
        "index": false,
        "doc_values": false
      },
      "attrs": {
        "type": "nested",
        "properties": {
          "attrId": {
            "type": "long"
          },
          "attrName": {
            "type": "keyword",
            "index": false,
            "doc_values": false
          },
          "attrValue": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

bejson中生成的javabean

@Data
public class SkuEsModel {

    //商品ID
    private Long spuId;
    //sku_id
    private Long skuId;
    //标题
    private String skuTitle;
    //价格
    private BigDecimal skuPrice;
    //图片
    private String skuImg;
    //销售量
    private Long saleCount;
    //是否还有库存
    private Boolean hasStock;
    //热度评分
    private Long hotScore;
    //品牌ID
    private Long brandId;
    //品牌名
    private String brandName;
    //品牌图片
    private String brandImg;
    //分类ID
    private Long catalogId;
    //分类名
    private String catalogName;
    //属性
    private List<Attrs> attrs;

    @Data
    public static class Attrs {
        //属性ID
        private Long attrId;
        //属性名
        private String attrName;
        //属性值
        private String attrValue;
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值