1. 程式人生 > 其它 >es通過mapping定義資料型別

es通過mapping定義資料型別

技術標籤:資料庫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 建立索引(預設,可不寫) } } } } } } }