【问题标题】:Re-Index Elasticsearch, ignore fields not in mapping重新索引 Elasticsearch,忽略不在映射中的字段
【发布时间】:2020-01-13 17:52:30
【问题描述】:

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

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

【问题讨论】:

  • 可以在开始重新索引之前调整映射设置吗?还是您无权访问它?
  • @AndreyBorisko 我可以,但我希望在重新索引期间忽略这些字段,或者我猜想将其删除。这甚至可能吗?
  • 有可能。不过可能看起来很脏。取决于您需要删除多少属性。

标签: elasticsearch


【解决方案1】:

如果您在运行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');
    }
    """
  }
}

【讨论】:

  • 这让我可以插入数据,但是我希望删除任何多余的字段。
  • 看来您必须指定所需的各个字段,而不是删除架构中没有的任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
相关资源
最近更新 更多