首页 > 解决方案 > 映射后是否有更好的方法来更新现有字段索引?

问题描述

我已设置dynamicfalse禁用动态映射。但是我忘记在映射中添加一个字段。我在索引所有文档后添加了该字段,因此 Elasticsearch 不会索引文档中存在的字段。

原始映射

{
  "customers" : {
    "mappings" : {
      "dynamic" : "false",
      "properties" : {
        "name" : {
          "type" : "keyword"
        }
      }
    }
  }
}

但是文件就像

"_source" : {
  "name" : "Bob"
  "favourite" : "cake"
}

favourite在为文档编制索引后,该字段被添加到映射中。

我必须更新所有文档以索引现有字段,有没有更好的方法?

标签: elasticsearch

解决方案


以前索引的文档不会更改并通知您的新更新,因此如果您希望所有文档在其字段上具有相同的属性,我想唯一的方法是将您当前的索引重新索引到具有所需映射的新索引和使用重新索引 API。

POST _reindex
{
  "source": {
    "index": "oldindex"
  },
  "dest": {
    "index": "newindex"
  }
}


推荐阅读