教程 elasticsearch tutorial

修改映射

在 Elasticsearch 中,映射(mapping)定义了索引中字段的数据类型和行为。由于映射设计对数据结构和查询性能影响较大,修改映射需谨慎操作。

1. 动态添加字段

Elasticsearch 支持在已有索引中动态添加新字段,但不支持修改已存在字段的类型。

示例:为索引添加新字段

json
PUT /my-index/_mapping
{
  "properties": {
    "new_field": {
      "type": "text"
    }
  }
}

`

2. 不支持修改的情况

  • 不能更改字段的数据类型(如将 text 改为 keyword)
  • 不能删除已存在字段
  • 不能更改字段的分析器(analyzer)

3. 修改映射的推荐方法:重建索引

当需要更改字段类型或映射结构时,通常采用重建索引的方法:

  1. 创建一个新的索引,定义新的映射结构
  2. 使用 _reindex API 将旧索引的数据复制到新索引
  3. 删除旧索引,重命名新索引(或更新应用配置指向新索引)

示例重建索引:

json
POST _reindex
{
  "source": {
    "index": "old-index"
  },
  "dest": {
    "index": "new-index"
  }
}

4. 注意事项

  • 修改映射时,尽量避免生产环境在线修改导致查询异常
  • 使用重建索引方法时,注意数据同步及停机时间规划
  • 版本升级时,映射策略可能会有所不同,需参考官方文档

合理管理映射的修改流程,有助于保持索引数据结构的稳定和系统的高效运行。