一、Mapping
image.png关于type
index、type的初衷
之前es将index、type类比于关系型数据库(例如mysql)中database、table,这么考虑的目的是“方便管理数据之间的关系”。
https://www.cnblogs.com/huangfox/p/9460361.html
二、字段的数据类型
image.png三、什么是Dynamic Mapping
自动创建索引,自动识别索引中的类型,有一定识别误差
image.png
四、类型的自动识别
image.png五、能否修改Mapping的字段类型
image.png六、控制Dynamic Mappings
image.png/////////////////////////////////
Mapping中的字段一旦设定后,禁止直接修改。因为倒排索引生成后不允许直接修改。需要重新建立新的索引,做reindex操作。
类似数据库中的表结构定义,主要作用
定义所以下的字段名字
定义字段的类型
定义倒排索引相关的配置(是否被索引?采用的Analyzer)
对新增字段的处理 true false strict
在object下,支持做dynamic的属性的定义
写入文档,查看 Mapping
PUT mapping_test/_doc/1
{
"firstName":"Chan",
"lastName": "Jackie",
"loginDate":"2018-07-24T10:29:48.103Z"
}
查看 Mapping文件
GET mapping_test/_mapping
Delete index
DELETE mapping_test
dynamic mapping,推断字段的类型
PUT dynamic_mapping_test/_doc/1
{
"uid" : "123",
"isVip" : false,
"isAdmin": "true",
"age":19,
"heigh":180
}
查看 Dynamic
GET mapping_test/_mapping
默认Mapping支持dynamic,写入的文档中加入新的字段
PUT dynamic_mapping_test/_doc/1
{
"newField":"someValue"
}
该字段可以被搜索,数据也在_source中出现
POST dynamic_mapping_test/_search
{
"query":{
"match":{
"newField":"someValue"
}
}
}
修改为dynamic false
PUT dynamic_mapping_test/_mapping
{
"dynamic": false
}
新增 anotherField
PUT dynamic_mapping_test/_doc/10
{
"anotherField":"someValue"
}
该字段不可以被搜索,因为dynamic已经被设置为false
POST dynamic_mapping_test/_search
{
"query":{
"match":{
"anotherField":"someValue"
}
}
}
get dynamic_mapping_test/_doc/10
修改为strict
PUT dynamic_mapping_test/_mapping
{
"dynamic": "strict"
}
写入数据出错,HTTP Code 400
PUT dynamic_mapping_test/_doc/12
{
"lastField":"value"
}
DELETE dynamic_mapping_test
https://www.elastic.co/guide/en/elasticsearch/reference/7.1/dynamic-mapping.html
网友评论