电商项目使用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,就会扁平化数据,导致查询结果不准确,产生多余数据
以上是关于电商项目使用ElasticSearch定义商品索引的主要内容,如果未能解决你的问题,请参考以下文章
亿级高并发电商项目-- 实战篇 --万达商城项目 十(安装与配置Elasticsearch和kibana编写搜索功能向ES同步数据库商品数据)
亿级高并发电商项目-- 实战篇 --万达商城项目 十(安装与配置Elasticsearch和kibana编写搜索功能向ES同步数据库商品数据)
Elasticsearch从零开始搭建ES集群并且集成到Springboot,更好的服务电商类等需要全文索引的项目