數(shù)據(jù)類型

圖片.png

圖片.png

object類型:
處理JSON對象,比如一個文檔中的嵌套對象。例如,用戶信息中的地址可能包含省、市、街道等字段,這時候可以用object類型。不過,object類型在處理數(shù)組對象時,會將數(shù)組中的每個對象合并,導(dǎo)致無法單獨查詢數(shù)組中的某個元素。例如,用戶可能有多個地址,如果使用object類型,查詢時可能會得到不正確的結(jié)果,因為Elasticsearch會將所有字段展開,導(dǎo)致數(shù)據(jù)混合。
nested類型:
處理對象數(shù)組,每個數(shù)組元素作為獨立的文檔存儲,這樣每個元素可以獨立查詢。例如,訂單中的商品列表,每個商品可能有多個屬性,使用nested類型可以確保每個商品的信息被獨立索引,查詢時可以精確匹配某個商品的屬性,而不會與其他商品混淆。
flattened類型:
處理動態(tài)或未知結(jié)構(gòu)的字段,將整個JSON對象存儲為鍵值對,避免字段爆炸。例如,日志數(shù)據(jù)中的元數(shù)據(jù)可能有各種動態(tài)字段,使用flattened類型可以避免字段過多導(dǎo)致索引壓力過大,同時保留數(shù)據(jù)的結(jié)構(gòu)化信息。不過,這種類型不支持復(fù)雜的查詢,比如全文搜索,因為所有值都被視為關(guān)鍵字。

圖片.png

圖片.png

五、數(shù)組與多字段特性
數(shù)組支持 ES不專門定義數(shù)組類型,任何字段都可包含多個值(但需保證類型一致):

   "tags": ["elasticsearch", "database", "nosql"]  // keyword數(shù)組
   多字段映射 (Multi-fields) 單個字段支持多種數(shù)據(jù)類型處理(常見于text與keyword組合):
   "title": {
     "type": "text",          // 全文搜索
     "fields": {
       "keyword": { 
         "type": "keyword"    // 精確匹配
       }
     }
   }

六、選型建議
文本處理
需要分詞搜索 → text + 分詞器(如ik_smart)
需要精確匹配 → keyword
數(shù)值處理
根據(jù)范圍選擇最小類型(如byte > short > integer > long)
嵌套關(guān)系
對象數(shù)組需獨立查詢 → nested
僅存儲不查詢 → object
特殊需求
IP分析 → ip
自動補全 → completion

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容