📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

为什么这个错误发生 #

strict_dynamic_mapping_exception 表示索引映射配置为严格模式(strict dynamic mapping),尝试动态引入新字段时被拒绝。

如何修复 #

1. 关闭严格模式 #

# 更新索引设置
PUT /<index>/_settings
{
  "index.mapper.dynamic": "runtime"  # 或 "false"
}

2. 显式定义字段 #

# 在映射中预先定义字段
PUT /<index>/_mapping
{
  "properties": {
    "new_field": { "type": "text" }
  }
}

3. 更新现有文档 #

# 只能操作已定义的字段
POST /<index>/_update/<id>
{
  "doc": {
    "existing_field": "new_value"
  }
}

预防措施 #

  • 预先定义所有需要的字段