# 手动与动态映射

URL: https://caijiao.org/elasticsearch/03.advanced/01.mapping-manual-dynamic
Source: docs/elasticsearch/03.advanced/01.mapping-manual-dynamic.md
Description: 本章介绍 Elasticsearch 中手动映射与动态映射的区别和应用场景，帮助用户灵活管理索引字段及数据结构。

映射（Mapping）定义了索引中文档字段的结构和类型，Elasticsearch 支持两种映射方式：手动映射和动态映射。合理选择映射方式有助于提升索引效率和数据准确性。

## 1. 手动映射

用户显式定义字段类型和属性，适合对数据结构有严格要求的场景。

### 优点

- 明确字段类型，避免类型冲突  
- 控制字段索引方式和分词器  
- 提升查询性能和准确性

### 示例

```json
PUT /my-index
{
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "price": { "type": "float" },
      "available": { "type": "boolean" }
    }
  }
}
````

## 2. 动态映射

Elasticsearch 自动推断新字段类型并创建映射，适合结构不固定或快速开发场景。

### 特点

* 新字段自动添加映射
* 方便快速接入数据
* 可能引入类型错误或映射膨胀

### 动态映射控制

通过设置 `dynamic` 参数，可以控制动态映射行为：

* `true`（默认）：自动映射新字段
* `false`：忽略新字段，不添加映射
* `strict`：遇到未定义字段报错

### 示例

```json
PUT /my-index
{
  "mappings": {
    "dynamic": "strict",
    "properties": {
      "title": { "type": "text" }
    }
  }
}
```

## 3. 选择建议

* 结构明确、生产环境推荐手动映射
* 快速开发或数据结构不确定时，可使用动态映射
* 配合索引模板和动态模板提升灵活性

---

理解并合理应用手动与动态映射，能有效控制索引结构，保障数据的准确性和查询效率。
