一、Mapping
# 映射在创建索引时设置Mapping
POST `http://localhost:9200/test_1`
# 请求正文
{
"mappings":{
"report":{
"_all":{
"enabled":true
},
"properties":{
"name":{"type":"string"},
"date":{"type":"date"}
}
}
}
}
# 获取mappings
POST `http://localhost:9200/test_1/mapping`
二、字段自动映射内容规则
JSON格式的数据 自动推测的字段类型
null 没有字段被添加
true or false boolean类型
浮点类型数字 float类型
数字 long类型
JSON对象 object类型
数组 由数组中第一个非空值决定
string 有可能是date类型(开启日期检测)、double或long类型、text类型、keyword类型
三、Mapping属性
官网Mapping parameters
3.1 dynamic属性
# 默认情况下,当添加一份文档时,如果出现新的字段,
# ES也会添加进去,不过这个是可以进行控制的,通过dynamic来进行设置
# dynamic值 说明
# true 默认值为true,自动添加字段
# false 忽略新的字段
# strict 严格模式,发现新的字段抛出异常
PUT `http://localhost:9200/test_1`
{
"mappings": {
"article": {
"dynamic":"strict", # 设置dynamic
"properties": {
"id":{"type": "long"},
"title":{"type": "text"}
}
}
}
}
3.2 date_detection属性
# ES默认会检查字段内容是否是日期
# 默认是开启的,通过date_detection可以设置开启he关闭
PUT `http://localhost:9200/test_1`
{
"mappings": {
"date_detection": false
}
}
四、字段数据类型
# 核心类型
字符串类型 string、text、keyword
数字类型 long、intger、short、byte、double、float、half_float、scaled_float
日期类型 date
布尔类型 boolean
二进制类型 binary
范围类型 range
# 复合类型
数组类型 array
对象类型 object
嵌套类型 nested
# 地理类型
地理坐标 geo_point
地理图形 geo_shape
# 特殊类型
IP类型 ip
范围类型 completion
令牌计数类型 token_count
附件类型 attachment
抽取类型 percolator
五、元字段
元字段分类 | 具体属性 | 作用 |
---|
文档属性的元字段 | _index | 文档所属索引 |
| _uid | 包含_type和_id的复合字段(取值为{type}#{id}) |
| _type | 文档的类型 |
| _id | 文档的id |
源文档的元字段 | _source | 文档的原始JSON字符串 |
| _size | _source字段的大小 |
| _all | 包含索引全部字段的超级字段 |
| _field_names | 文档中包含非空值的所有字段 |
路由的元字段 | _parent | 指定文档间的父子关系 |
| _routing | 将文档路由到特定分片的自定义路由值 |
| 自定义元字段 | _meta 用于自定义元数据 |