[TOC]
# Mapping映射
* 什么是Mapping映射?
映射: 创建索引的时候,可以预先定义字段的类型以及相关属性
作用: 这样会让索引建立得更加的细致和完善
分类: 静态映射和动态映射
* 类型映射关系
![](https://box.kancloud.cn/e9ebe3cf2194d80fc2d41c7b5a0ae768_943x398.png)
* 映射的属性方法
除了定义字段的类型,还可以给字段添加相关的属性
![](https://box.kancloud.cn/24d78da4363df0654413e6f83edb3a57_1870x1052.png)
建立映射
~~~
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": "integer"}
}
}
}
}
~~~
查看下
~~~
GET /library
~~~
# 动态映射
* 什么是动态映射?
文档中碰到一个以前没有见过的字段时,动态映射可以自动决定该字段的类型,并对该字段添加映射
* 如何配置动态映射?
通过dynamic属性进行控制
true: 默认值,动态添加字段; false忽略新字段; strict: 碰到陌生字段,抛出异常
* 适用范围
适用在根对象上或者object类型的任意字段上
动态映射
~~~
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/_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
~~~
- SQL
- 名词
- mysql
- 初识mysql
- 备份和恢复
- 存储引擎
- 数据表损坏和修复
- mysql工具
- 数据库操作
- 增
- 删
- 改
- 查
- 数据类型
- 整数类型
- 小数类型
- 日期时间类型
- 字符和文本型
- enum类型
- set类型
- 时间类型
- null与not null和null与空值''的区别
- 数据表操作
- 创建
- 索引
- 约束
- 表选项列表
- 表的其他语句
- 视图
- sql增删改查
- sql增
- sql删
- sql改
- sql查
- sql语句练习
- 连接查询和更新
- 常用sql语句集锦
- 函数
- 字符函数
- 数值运算符
- 比较运算符与函数
- 日期时间函数
- 信息函数
- 聚合函数
- 加密函数
- null函数
- 用户权限管理
- 用户管理
- 权限管理
- pdo
- 与pdo相关的几个类
- 连接数据库
- 使用
- pdo的错误处理
- pdo结果集对象
- pdo结果集对象常用方法
- pdo预处理
- 常用属性
- mysql编程
- 事务
- 语句块
- mysql中的变量
- 存储函数
- 存储过程
- 触发器
- mysql优化
- 存储引擎
- 字段类型
- 三范式和逆范式
- 索引
- 查询缓存
- limit分页优化
- 分区
- 介绍
- 分区算法
- list分区
- range范围
- Hash哈希
- key键值
- 分区管理
- 特别注意
- 分表
- 数据碎片与维护
- innodb表压缩
- 慢查询
- explain执行计划
- count和max,groupby优化
- 子查询优化
- mysql锁机制
- 介绍
- 演示
- 总结
- 乐观锁和悲观锁
- 扛得住的mysql
- 实例和故事
- 系统参数优化
- mysql体系结构
- mysql基准测试
- 索引
- mysql的复制
- win配置MySQL主从
- mysql5.7新特性
- 常见问题
- general log
- 忘记密码
- uodo log与redo log
- 事务隔离级别
- mysql8密码登录
- explain
- 高效的Tree表
- on delete cascade 总结
- mongod
- 简介
- 集合文档操作语句
- 增删改查
- 索引
- 数据导入和导出
- 主从复制
- php7操作mongod
- 权限管理
- redis
- redis简介
- 3.2版本配置文件
- 3.0版本配置文件
- 2.8版本配置文件
- 配置文件总结
- 外网连接
- 持久化
- RDB备份方式保存数据
- AOF备份方式保存数据
- 总结
- win安装redis和sentinel部署
- 事务
- Sentinel模式配置
- 分布式锁
- 管道
- php中redis代码
- 发布订阅
- slowlog
- Redis4.0
- scan和keys
- elasticsearch
- 配置说明
- 启动
- kibana
- kibana下载
- kibana配置文件
- kibana常用功能
- 常用术语
- Beats
- Beats简介
- Filebeat
- Packetbeat
- Logstash
- 配置
- elasticsearch架构
- es1.7
- head和bigdesk插件
- 插件大全
- 倒排索引
- 单模式下API增删改查
- mget获取多个文档
- 批量操作bulk
- 版本控制
- Mapping映射
- 基本查询
- Filter过滤
- 组合查询
- es配置文件
- es集群优化和管理
- logstash
- kibana
- es5.2
- 安装
- 冲突处理
- 数据备份
- 缺陷不足
- 集群管理api
- 分布式事务
- CAP理论
- BASE模型
- 两阶段提交(2PC)
- TCC (Try-Confirm-Cancle)
- 异步确保型
- 最大努力通知型
- 总结