es通過mapping定義資料型別
阿新 • • 發佈:2020-12-19
技術標籤:資料庫elasticsearch
前面已經說了,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 建立索引(預設,可不寫)
}
}
}
}
}
}
}