电商项目使用ElasticSearch定义商品索引

Posted lovoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电商项目使用ElasticSearch定义商品索引相关的知识,希望对你有一定的参考价值。

由于电商网站商品资料品种繁多,数据量大,当用户搜索商品时,如果使用传统的mysql数据库进行查询,项目的性能无法满足用户要求,为了提高响应速度,这时我们就要把主要的商品信息放入ES中。下图定义了一个通用的电商数据存储模版:
在这里插入图片描述
通用Json数据结构:

PUT product
{
  "mappings": {
    "properties": {
      "skuId": {
        "type": "long"
      },
      "spuId": {
        "type": "keyword"
      },
      "skuTitle": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "skuPrice": {
        "type": "double"
      },
      "skuImg": {
        "type": "keyword",
        "index": false,
        "doc_values": false
      },
      "saleCount": {
        "type": "long"
      },
      "hasStock": {
        "type": "boolean"
      },
      "hotScore": {
        "type": "long"
      },
      "brandId": {
        "type": "long"
      },
      "catalogId": {
        "type": "long"
      },
      "brandName": {
        "type": "keyword",
        "index": false,
        "doc_values": false
      },
      "brandImg": {
        "type": "keyword",
        "index": false,
        "doc_values": false
      },
      "catalogName": {
        "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"
          }
        }
      }
    }
  }
}

attr的类型必须为nested,如果不设置为nested,就会扁平化数据,导致查询结果不准确,产生多余数据

电商项目地址:https://gitee.com/charlinchenlin/wysmall

以上是关于电商项目使用ElasticSearch定义商品索引的主要内容,如果未能解决你的问题,请参考以下文章

亿级高并发电商项目-- 实战篇 --万达商城项目 十(安装与配置Elasticsearch和kibana编写搜索功能向ES同步数据库商品数据)

亿级高并发电商项目-- 实战篇 --万达商城项目 十(安装与配置Elasticsearch和kibana编写搜索功能向ES同步数据库商品数据)

Elasticsearch从零开始搭建ES集群并且集成到Springboot,更好的服务电商类等需要全文索引的项目

Elasticsearch顶尖高手系列-快速入门篇

《果然新鲜》电商项目(47)- Docker下搭建ElasticSearch集群

SpringBoot电商项目实战 — ElasticSearch接入实现