美文网首页
Dynamic Mapping 和 常见字段类型

Dynamic Mapping 和 常见字段类型

作者: 滴流乱转的小胖子 | 来源:发表于2020-06-30 06:56 被阅读0次

一、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

相关文章

网友评论

      本文标题:Dynamic Mapping 和 常见字段类型

      本文链接:https://www.haomeiwen.com/subject/mqhtqktx.html