文章目录
什么是Mapping
Mapping 作用如下:
a.定义索引中字段名称
b.定义字段类型
c.倒排索引相关设置
Dynamic Mapping
a.在索引不存在时,根据内容自动创建索引
b.自动根据字段内容推算字段类型
类型自动识别
mapping 字段类型更改
在Dynamic:true,新增的字段会更改Mapping,文档插入成功且字段可索引,该文档可以显示
PUT /dy_true/_doc/1
{
"name":"xieruixiang",
"age":28
}
# 第一次查看mapping
GET /dy_true/_mapping
# Dynamic:true
PUT /dy_true/_mapping
{
"dynamic":true
}
PUT /dy_true/_doc/2
{
"name":"xieruixiang",
"age":28,
"date":"2022-02-02"
}
# 对比第一次查看mapping mapping 会被更新
GET /dy_true/_mapping
# 可以被索引
POST /dy_true/_search
{
"query":{
"match":{
"date":"2022-02-02"
}
}
}
在Dynamic:false,新增字段不会更新mapping,文档可以插入但字段不可索引,该文档可以显示
PUT /dy_false/_doc/1
{
"name":"xieruixiang",
"age":28
}
# 第一次查看mapping
GET /dy_false/_mapping
# 设置 Dynamic false
PUT /dy_false/_mapping
{
"dynamic":false
}
PUT /dy_false/_doc/2
{
"name":"xieruixiang",
"age":28,
"date":"2022-02-02"
}
# 对比第一次查看mapping,发现mapping并未更新
GET /dy_false/_mapping
# 无法被检索
POST /dy_false/_search
{
"query":{
"match":{
"date":"2022-02-02"
}
}
}
在Dynamic:strict,无法新增,字段不可索引,该文档无法显示
PUT /dy_strict/_doc/1
{
"name":"xieruixiang",
"age":28
}
# 第一次查看mapping
GET /dy_strict/_mapping
# 设置 strict
PUT /dy_strict/_mapping
{
"dynamic":"strict"
}
# 无法插入直接报错 status:400
PUT /dy_strict/_doc/2
{
"name":"xieruixiang",
"age":28,
"date":"2022-02-02"
}
# 对比第一次查看mapping 无更改
GET /dy_strict/_mapping
# 无法检索
POST /dy_false/_search
{
"query":{
"match":{
"date":"2022-02-02"
}
}
}