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映射的新增
- 先新建一個(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
}
- 在原有的Mapping上,新增一個(gè)屬性,繼續(xù)提交
如果有,則不變,如果原來沒有,則進(jìn)行新增
POST/PUT http://localhost:9200/itest/_mapping
{
"properties": {
"name": {
"type": "text"
}
}
}
返回結(jié)果
{
"acknowledged": true
}
注:再次提交時(shí),如果比原來少了Mapping時(shí),是不會有變更的
獲取現(xiàn)有的映射
獲取指定索引下的映射
{
"itest": {
"mappings": {
"properties": {
"city": {
"type": "keyword"
},
"description": {
"type": "text"
},
"jid": {
"type": "long"
},
"name": {
"type": "text"
},
"salary": {
"type": "integer_range"
},
"title": {
"type": "text"
}
}
}
}
}
獲取所有已有的映射信息
已有映射字段的修改調(diào)整?
- 創(chuàng)建一個(gè)全新的索引(index),映射包含調(diào)整后的字段或類型 #job #job2
- 將原有索引下的數(shù)據(jù)遷移(reindex)到新的索引 #job reindex-> #job2
- 刪除原有索引 #DELETE job
- 將新的索引的別名(alias)設(shè)置原有索引相同名稱 #job2 alias-> job
ES警示: ES的前期字段設(shè)計(jì)很重要,尤其是對名稱和類型進(jìn)行規(guī)劃,避免出現(xiàn)重命名的情況