Elasticsearch Version
8.16
Installed Plugins
No response
Java Version
bundled
OS Version
x
Problem Description
When copy_to values are parsed, we create a custom context via createCopyToContext. This context preserves the dynamic value from parent context which is wrong. That value is for the field that is a source of the copy, not the destination. As a result, when copy_to destination is a dynamically mapped field and
|
ensureNotStrict(context, currentFieldName); |
is called, it throws an exception that is wrong.
Steps to Reproduce
PUT my-index
{
"mappings": {
"properties": {
"copy_source": {
"dynamic": "strict",
"properties": {
"k": {
"type": "keyword",
"copy_to": "dest"
}
}
}
}
}
}
POST my-index/_bulk?refresh
{ "create": {} }
{ "copy_source": { "k": "let's copy" } }
// Results in this which is wrong
"error": {
"type": "strict_dynamic_mapping_exception",
"reason": "[1:25] mapping set to strict, dynamic introduction of [dest] within [_doc] is not allowed"
}
Logs (if relevant)
No response
Elasticsearch Version
8.16
Installed Plugins
No response
Java Version
bundled
OS Version
x
Problem Description
When
copy_tovalues are parsed, we create a custom context viacreateCopyToContext. This context preserves thedynamicvalue from parent context which is wrong. That value is for the field that is a source of the copy, not the destination. As a result, whencopy_todestination is a dynamically mapped field andelasticsearch/server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java
Line 533 in 45306a5
Steps to Reproduce
Logs (if relevant)
No response