Elasticsearch之Dynamic Mapping

本文我們介紹ES的Dynamic Mapping(動(dòng)態(tài)mapping)

  • es可以自動(dòng)識(shí)別文檔字段類型,從而降低用戶的使用成本,如下圖所示:
    圖-1
  • es對(duì)字段類型的自動(dòng)識(shí)別是依靠JSON文檔的字段類型來實(shí)現(xiàn)自動(dòng)識(shí)別字段的類型,支持類型如下:
JSON類型 es類型
null 忽略
boolean boolean
浮點(diǎn)類型 float
整數(shù) long
object object
array 由第一個(gè)非null值類型決定
string 1.匹配為日期則設(shè)為date類型(默認(rèn)開啟)2.匹配為數(shù)字的話設(shè)為float或long類型(默認(rèn)關(guān)閉),以上兩種不滿足最后會(huì)設(shè)為text類型,并附帶keyword的子字段

我們可以通過如下方式驗(yàn)證es的自動(dòng)識(shí)別
圖-2
圖-3
  • 日期的自動(dòng)識(shí)別可以自行配置日期格式的,以滿足各種需求
    圖-4

    自定日期的識(shí)別格式如下
    圖-5
    關(guān)閉日期自動(dòng)識(shí)別機(jī)制如下
    圖-6
  • 字符串是數(shù)字時(shí),默認(rèn)是不會(huì)自動(dòng)識(shí)別為整型,因?yàn)樽址谐霈F(xiàn)數(shù)字是完全合理的

    ?- numeric_detection可以開啟字符串中數(shù)字的自定識(shí)別,如下圖所示:
    圖-7
  • Dynamic Templates(動(dòng)態(tài)模板),允許根據(jù)es自動(dòng)識(shí)別的數(shù)據(jù)類型、字段名等來動(dòng)態(tài)設(shè)定
    ? - 所有字符串類型都設(shè)定為keyword類型,即默認(rèn)不分詞,哪些字段需要分詞我們?cè)賳为?dú)設(shè)置
    ? - 所有以message開頭的字段都設(shè)定為text類型,即分詞
    ? - 所有以long_開頭的字段都設(shè)定為long類型
    ? - 所有自動(dòng)匹配為double類型的都設(shè)定為float類型,可以節(jié)省空間

    API如下
    圖-8

    匹配規(guī)則一般又如下幾個(gè)參數(shù):
    ? - match_mapping_type匹配es自動(dòng)識(shí)別的字段類型,如boolean,long,string等
    ? - match,unmatch 匹配字段名
    ? - path_match,path_unmatch 匹配路徑
    將字符串默認(rèn)使用keyword類型(es默認(rèn)會(huì)為字符串設(shè)置為text類型,并增加一個(gè)keyword的子字段),設(shè)置如下:
    圖-9

    將以message開頭的字段都設(shè)置為text類型,設(shè)置如下
    圖-10
    將double類型的設(shè)定為float,節(jié)省空間,設(shè)定如下
    圖-11
  • 自定義Mapping的操作步驟如下:
    ?1. 寫入一條文檔到es臨時(shí)索引中,獲取es自動(dòng)生成的mapping
    ?2. 修改步驟1得到的mapping,自定義相關(guān)配置
    ?3.使用步驟2的mapping創(chuàng)建實(shí)際所需的索引
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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