是否可以通过 Elasticsearch 中的映射更新索引中的现有字段?

Is it possible to update an existing field in an index through mapping in Elasticsearch?

我已经创建了一个索引,它包含来自我的 MySQL 数据库的数据。我的 table 中有几个字段 string,我需要它们作为 Elasticsearch 中的不同类型(integerdouble)。

所以我知道我可以通过 mapping 做到这一点,如下所示:

{
  "mappings": {
    "my_type": {
      "properties": {
        "userid": {
          "type": "text",
          "fielddata": true
        },
        "responsecode": {
          "type": "integer"
        },
        "chargeamount": {
          "type": "double"
        }
      }
    }
  }
} 

但是我在创建新索引时试过这个。我想知道的是如何使用 mapping 作为 PUT 更新现有字段(即:在这种情况下为 chargeamount)?

这可能吗?任何帮助都将不胜感激。

创建映射类型后,您可以更新的内容就会受到很大限制。根据 official documentation,创建现有映射后您可以对其进行的唯一更改如下,但更改字段类型不是其中之一:

In general, the mapping for existing fields cannot be updated. There are some exceptions to this rule. For instance:

  • new properties can be added to Object datatype fields.
  • new multi-fields can be added to existing fields.
  • doc_values can be disabled, but not enabled.
  • the ignore_above parameter can be updated.