Skip to content

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

Closed
@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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions