一个集群,可以建多个索引,每个索引又有多个类型,每个类型有自己的mapping。
转自:https://blog.csdn.net/zhousenshan/article/details/82928827
1、什么是映射
映射:创建索引的时候,可以预先定义字段的类型以及相关属性(比如说让某字段是否存储、用那种分析器、重要级别)
Elasticsearch可定义的字段类型
作用:这样会让索引建立的更加的细致和完善!
分类:静态映射和动态映射
2、映射的属性方法
除了定义字段的类型、还可以给字段添加相关的属性。通过定义这些属性,可以让字段更加高级、特殊性
字段可添加的属性
特殊讲解:
analyzer :
standard:支持多数欧洲语言
whitespace:基于空格进行分词
simple:基于非字母字符进行分词,同时还能转化为小写字母
english:对英文进行分词
3、动态映射
什么是动态映射?
文档中碰到一个以前没见过的字段是,动态映射可以自动决定该字段的类型,并对该字段添加映射。
如何配置动态映射?
通过dynamic属性进行控制
true:默认值,动态添加字段;
false:忽略新字段;
strict:碰到陌生字段,抛出异常。
适用范围
适用在根对象上(根对象是啥?)或者object类型的任意字段上
#建立映射
POST /library
{
"settings":{
"number_of_shards":5,
"number_of_replicas":1
},
"mappings":{
"books":{
"properties":{
"title":{"type": "string"},
"name":{"type": "string","index":"not_analyzed"},
"publish_date":{"type": "date","index":"not_analyzed"},
"price":{"type": "double"},
"number":{"type":"double"},
"number":{"type": "integer"}
}
}
}
}
GET /library/
#动态映射
PUT /library
{
"mappings":{
"books": {
"dynamic": "strict",
"properties":{
"title" : {"type": "string"},
"name":{"type":"string","index":"not_analyzed"},
"publish_date": {"type":"date","index":"not_analyzed"},
"price": {"type": "double"},
"number": {
"type": "object",
"dynamic": true
}
}
}
}
}
GET /library/
4、管理映射
获取映射信息
#获取某个索引的映射信息
GET /library/_mapping
GET /bank/_mapping
#获取某个索引下某个type的映射信息
GET /library/_mapping/books
#获取藏歌集群内所有的映射信息
GET /_all/_mapping
#获取这个集群内某两个或多个type的映射信息
GET /_all/_mapping/books,bank_account
更新映射信息
#更新修改mapping映射
#很遗憾,mapping一旦建立,就不能修改现有的字段映射
#如果要推倒现有的映射,你得重新建立一个索引,然后重新定义映射
#然后把之前索引里的数据导入到新建立的索引里
#======具体的方法=========
#1、给现有的索引定义一个别名,并且把现有的索引指向这个别名,运行步骤2;
#2、运行: PUT /现有索引/_alias/别名A
#3、新创建一个索引,定义好最新的映射
#4、将别名指向新的索引,并且取消之前索引的指向,运行步骤5
#5、运行:POST /_aliases
{
"actions":{
{"remove": {"index": "现有索引名","alias":"别名A"}},
{“add”:{"index":"新建索引名","alias":"别名A"}}
}
}
#注: 通过这几个步骤就实现了索引的平滑过渡,并且是零停机的。
删除映射信息
#删除映射
DELETE /library/books
DELETE /library/books/_mapping
DELETE /library/_mapping/books
DELETE /library/_mapping/books,bank