04 ES中的映射Mapping

Mapping映射其實(shí)就是指數(shù)據(jù)的結(jié)構(gòu)(類似于表結(jié)構(gòu))

注意: ES中的映射Mapping只能新增字段,不能修改/刪除映射下的任何字段或類型.這是硬性
規(guī)定.

常見的數(shù)據(jù)類型

字符串

  • text : 當(dāng)一個(gè)字段是要被全文搜索的,比如Email內(nèi)容、產(chǎn)品描述,應(yīng)該使用text
    類型。設(shè)置text類型以后,字段內(nèi)容會被分析,在生成倒排索引以前,字符串會被分
    析器分成一個(gè)一個(gè)詞項(xiàng)。text類型的字段不用于排序,很少用于聚合。

  • keyword: keyword類型適用于索引結(jié)構(gòu)化的字段,比如email地址、主機(jī)名、
    狀態(tài)碼和標(biāo)簽。如果字段需要進(jìn)行過濾(比如查找已發(fā)布博客中status屬性為
    published的文章)、排序、聚合。keyword類型的字段只能通過精確值搜索到。

數(shù)值型

  • 整型: byte,short,integer,long
  • 浮點(diǎn)型: float, half_float, scaled_float,double

日期類型

  • date

format。通過format設(shè)置日期格式,常見的可以設(shè)置成年月
日時(shí)分秒、年月日及毫秒值三種格式。

ignore_malformed。默認(rèn)值false。如果為true,則忽略格式
錯(cuò)誤的數(shù)字。如果為false(默認(rèn)值),則格式錯(cuò)誤的數(shù)字將引發(fā)異
常并拒絕整個(gè)文檔。

null_value。默認(rèn)是null。接受采用配置格式之一的日期值作
為該字段,以替換任何顯式的空值。默認(rèn)為null,這意味著該字段
被視為丟失。

{
 "properties": {
 "birthday": {
 "type": "date",
 "format": "yyyy‐MM‐dd HH:mm:ss||yyyy‐MM‐dd||epoch_millis",
 "ignore_malformed": false,
 "null_value": null
 }
 }

范圍型

  • integer_range, long_range, float_range,double_range,date_range

布爾 boolean :

true、false

?進(jìn)制 binary :

會把值當(dāng)做經(jīng)過 base64 編碼的字符串,默認(rèn)不存儲,且不可搜索

復(fù)雜數(shù)據(jù)類型(不建議使用)

  • object 對象
  • 數(shù)組

專用數(shù)據(jù)類型IP

實(shí)現(xiàn)Mapping映射的新增

  1. 先新建一個(gè)Mapping映射
    如:

POST/PUT http://localhost:9200/itest/_mapping

{
  "properties": {
    "jid": {
      "type": "long"
    },
    "title": {
      "type": "text"
    },
    "salary": {
      "type": "integer_range"
    },
    "city": {
      "type": "keyword"
    },
    "description": {
      "type": "text"
    }
  }
}

返回結(jié)果

{
    "acknowledged": true
}
  1. 在原有的Mapping上,新增一個(gè)屬性,繼續(xù)提交

如果有,則不變,如果原來沒有,則進(jìn)行新增

POST/PUT http://localhost:9200/itest/_mapping

{
  "properties": {
    "name": {
      "type": "text"
    }
  }
}

返回結(jié)果

{
    "acknowledged": true
}

注:再次提交時(shí),如果比原來少了Mapping時(shí),是不會有變更的

獲取現(xiàn)有的映射

獲取指定索引下的映射

GET http://localhost:9200/itest/_mapping

{
    "itest": {
        "mappings": {
            "properties": {
                "city": {
                    "type": "keyword"
                },
                "description": {
                    "type": "text"
                },
                "jid": {
                    "type": "long"
                },
                "name": {
                    "type": "text"
                },
                "salary": {
                    "type": "integer_range"
                },
                "title": {
                    "type": "text"
                }
            }
        }
    }
}

獲取所有已有的映射信息

已有映射字段的修改調(diào)整?

  1. 創(chuàng)建一個(gè)全新的索引(index),映射包含調(diào)整后的字段或類型 #job #job2
  2. 將原有索引下的數(shù)據(jù)遷移(reindex)到新的索引 #job reindex-> #job2
  3. 刪除原有索引 #DELETE job
  4. 將新的索引的別名(alias)設(shè)置原有索引相同名稱 #job2 alias-> job
    ES警示: ES的前期字段設(shè)計(jì)很重要,尤其是對名稱和類型進(jìn)行規(guī)劃,避免出現(xiàn)重命名的情況
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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