Skip to content

copy_to logic fails when used to copy value from object with dynamic: "strict" to a dynamically mapped field #113049

@lkts

Description

@lkts

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

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions