From 0b453d5cd640b659b10358ae3540c78c95037fbe Mon Sep 17 00:00:00 2001 From: Oleksandr Kolomiiets Date: Tue, 4 Feb 2025 13:56:18 -0800 Subject: [PATCH 1/2] Fix synthetic source issue with deeply nested ignored source fields --- .../index/mapper/ObjectMapper.java | 2 +- .../mapper/IgnoredSourceFieldMapperTests.java | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java index abca8e057f3b8..4c9214015fba6 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java @@ -1127,7 +1127,7 @@ public boolean setIgnoredValues(Map { + b.startObject("top"); + b.startObject("properties"); + { + b.startObject("level1").startObject("properties"); + { + b.startObject("level2").startObject("properties"); + { + b.startObject("n") + .field("type", "integer") + .field("doc_values", "false") + .field("synthetic_source_keep", "all") + .endObject(); + } + b.endObject().endObject(); + } + b.endObject().endObject(); + } + b.endObject().endObject(); + })).documentMapper(); + + var syntheticSource = syntheticSource(documentMapper, b -> { + b.startObject("top").startObject("level1").startObject("level2").field("n", 25).endObject().endObject().endObject(); + }); + assertEquals("{\"top\":{\"level1\":{\"level2\":{\"n\":25}}}}", syntheticSource); + } + protected void validateRoundTripReader(String syntheticSource, DirectoryReader reader, DirectoryReader roundTripReader) throws IOException { // We exclude ignored source field since in some cases it contains an exact copy of a part of document source. From 989c758a75a117e113e183e399944bbfc5385ed0 Mon Sep 17 00:00:00 2001 From: Oleksandr Kolomiiets Date: Tue, 4 Feb 2025 14:05:09 -0800 Subject: [PATCH 2/2] Update docs/changelog/121715.yaml --- docs/changelog/121715.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/changelog/121715.yaml diff --git a/docs/changelog/121715.yaml b/docs/changelog/121715.yaml new file mode 100644 index 0000000000000..837bae57b4c91 --- /dev/null +++ b/docs/changelog/121715.yaml @@ -0,0 +1,5 @@ +pr: 121715 +summary: Fix synthetic source issue with deeply nested ignored source fields +area: Mapping +type: bug +issues: []