首页 > 解决方案 > 重新索引 Elasticsearch,忽略不在映射中的字段

问题描述

尝试在 elasticsearch 中测试重新索引 API 并遇到现有数据包含新索引严格映射中不存在的字段的问题。有没有办法告诉elasticsearch简单地忽略这些字段并继续?

编辑:为了澄清,忽略我的意思是在重新索引过程中不包括这些字段。

标签: elasticsearch

解决方案


如果您在运行之前可以访问索引设置,reindex则可以执行以下操作:

PUT test/_mapping
{
    "dynamic": "false"
}

然后将其更改回strict重新索引完成后。

根据您的评论更新

POST _reindex
{
  "source": {
    "index": "src"
  },
  "dest": {
    "index": "dst"
  },
  "script": {
    "lang": "painless",
    "source": """
    ctx['_source'].remove('email');
    ctx['_source'].remove('username');
    ctx['_source'].remove('name');
    // removing from nested:
    for(item in ctx['_source'].Groups){
        item.remove('GroupName');
        item.remove('IsActive');
    }
    """
  }
}

推荐阅读