Mapping中的字段一旦设定后,禁止直接修改。因为倒排索引生成后不允许直接修改。需要重新建立新的索引,做reindex操作。
类似数据库中的表结构定义,主要作用
定义索引下的字段名字
定义字段的类型
定义倒排索引相关的配置(是否被索引?采用的Analyzer)
对新增字段的处理
true
false
strict
在object下,支持做dynamic的属性的定义
当dynamic mapping映射时。如果映射不满足我们的需求。能否进行修改映射关系,答案是不能直接修改,除非进行reindex 重建索引
dynamic mapping 就是当我们直接添加新的字段到索引中,此时如果没有指定相对应的映射关系,那么es就会自动通过dynamic mapping 进行映射
#写入文档,查看 Mapping
PUT mapping_test/_doc/1
{
"firstName":"Chan",
"lastName": "Jackie",
"loginDate":"2018-07-24T10:29:48.103Z"
}
###查看 Mapping文件 已经将时间映射为date 名字映射为了 并且type 为text 同时他 额外的提供了
#### "fields" : {
#### "keyword" : {
#### "type" : "keyword",
#### "ignore_above" : 256
#### }
#### }
#### 这个字段是当我们对所选字段进行聚合 查询的时候,因为当前字段属于text 类型。所以所对应的索引都会进行分词,这是我们对于整体进行聚合查询时,结果就不够准确。所以此时我们可以通过 字段名.keyword 进行聚合查询,结果就足够的准确
GET mapping_test/_mapping
DELETE mapping_test
#dynamic mapping,推断字段的类型
## 但是dynamic mapping 也会经常有不准确的时候,譬如,下面的uid映射为text ,isadmin 映射为text 而并非integer 或者 Boolean
PUT mapping_test/_doc/1
{
"uid" : "123",