是否可以通过 Elasticsearch 中的映射更新索引中的现有字段?
Is it possible to update an existing field in an index through mapping in Elasticsearch?
我已经创建了一个索引,它包含来自我的 MySQL
数据库的数据。我的 table 中有几个字段 string
,我需要它们作为 Elasticsearch
中的不同类型(integer
和 double
)。
所以我知道我可以通过 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.
我已经创建了一个索引,它包含来自我的 MySQL
数据库的数据。我的 table 中有几个字段 string
,我需要它们作为 Elasticsearch
中的不同类型(integer
和 double
)。
所以我知道我可以通过 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.