教程 elasticsearch tutorial

手动与动态映射

映射(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. 选择建议

  • 结构明确、生产环境推荐手动映射
  • 快速开发或数据结构不确定时,可使用动态映射
  • 配合索引模板和动态模板提升灵活性

理解并合理应用手动与动态映射,能有效控制索引结构,保障数据的准确性和查询效率。