前面已经说了,es都是文本的形式存储数据,直接创建索引,和type表,字段中插入数据。
不需要定义这些数据是什么类型的,可以不定义。但如果要定义,那么我们就可以使用mapping来定义数据结构类型
1、Es的mapping定义是基于整个库的
Mysql数据结构字段定义是基于整个表的
2、Es由mapping定义默认字段数据类型
Text:可拆分的字符串(分词)
Keyword:不可拆分字符串
3、决战618这本书在吹牛,吹京东自己的,自己的sku商品(以前+现售)超10亿个
4、es搜索这些sku,也相当于搜索引擎了。但比起百度,谷歌这些,10亿条数据还是算少的了。
5、搭建es的数据结构(主要定义使用sku_info表的数据)
(1)商品名称(展示/查询)
(2)商品价格(展示/查询)
(3)商品图片(展示)
(4)平台属性和属性值的列表(查询)
(5)商品描述(展示/查询)
(6)热度值(查询,指搜索热度较高的商品,暂时不用)
(7)三级分类id(查询)
(8)系列商品productId(隐藏)
(9)具体商品skuId主键(隐藏)
可拆分字符串,都使用分词器进行分词。
不可拆分字符串,考虑其内容是否需要被进行搜索:
是,创建索引,默认(“index”:true);否,不创建索引(“index”:false)
PUT gmall0105 库名(不可有大写字母)
{
"mappings": { 通过mapping定义字符类型
"PmsSkuInfo":{ 表名
"properties": { 定义字段和属性
"id":{ skuId主键
"type": "keyword" 类型:不可拆分字符串
, "index": true 创建索引(默认,可不写)
},
"skuName":{ sku名称
"type": "text" 类型:text文本,可拆分字符串
, "analyzer": "ik_max_word" 使用分词器:尽最大可能分词
, "index": true 创建索引(默认,可不写)
},
"skuDesc":{ sku描述
"type": "text" 类型:text文本,可拆分字符串
, "analyzer": "ik_smart" 使用分词器:简易分词
, "index": true 创建索引(默认,可不写)
},
"catalog3Id":{ 3级分类Id
"type": "keyword" 类型:不可拆分字符串
, "index": true 创建索引(默认,可不写)
},
"price":{ 价格
"type": "double" 类型:double
, "index": true 创建索引(默认,可不写)
},
"skuDefaultImg":{ sku主图
"type": "keyword" 类型:不可拆分字符串
, "index": false 不创建索引(不需要根据图片地址搜索商品)
},
"hotScore":{ 热度值
"type": "double" 类型:double
, "index": true 创建索引(默认,可不写)
},
"productId":{ spu系列商品Id
"type": "keyword" 类型:不可拆分字符串
, "index": true 创建索引(默认,可不写)
},
"skuAttrValueList":{ 平台属性和属性值列表(中间表)
"properties": { 定义字段和属性
"attrId":{ 平台属性Id
"type":"keyword" 类型:不可拆分字符串
, "index": true 创建索引(默认,可不写)
},
"valueId":{ 平台属性值Id
"type":"keyword" 类型:不可拆分字符串
, "index": true 创建索引(默认,可不写)
}
}
}
}
}
}
}