Skip to content

Commit b16fb08

Browse files
committed
Dont store geo_point in ignored source
1 parent 99f67fa commit b16fb08

File tree

2 files changed

+11
-20
lines changed

2 files changed

+11
-20
lines changed

server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ static void parseObjectOrField(DocumentParserContext context, Mapper mapper) thr
460460
if (context.canAddIgnoredField()
461461
&& (fieldMapper.syntheticSourceMode() == FieldMapper.SyntheticSourceMode.FALLBACK
462462
|| sourceKeepMode == Mapper.SourceKeepMode.ALL
463-
|| (sourceKeepMode == Mapper.SourceKeepMode.ARRAYS && context.inArrayScope())
463+
|| (sourceKeepMode == Mapper.SourceKeepMode.ARRAYS && context.inArrayScope() && parsesArrayValue(mapper) == false)
464464
|| (context.isWithinCopyTo() == false && context.isCopyToDestinationField(mapper.fullPath())))) {
465465
context = context.addIgnoredFieldFromContext(
466466
IgnoredSourceFieldMapper.NameValue.fromContext(context, fieldMapper.fullPath(), null)

server/src/test/java/org/elasticsearch/index/mapper/blockloader/GeoPointFieldBlockLoaderTests.java

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@ public GeoPointFieldBlockLoaderTests(BlockLoaderTestCase.Params params) {
3030

3131
@Override
3232
@SuppressWarnings("unchecked")
33-
protected Object expected(Map<String, Object> fieldMapping, Object value, TestContext testContext) {
34-
var extractedFieldValues = (ExtractedFieldValues) value;
35-
var values = extractedFieldValues.values();
36-
33+
protected Object expected(Map<String, Object> fieldMapping, Object values, TestContext testContext) {
3734
var nullValue = switch (fieldMapping.get("null_value")) {
3835
case String s -> convert(s, null, false);
3936
case null -> null;
@@ -75,9 +72,6 @@ protected Object expected(Map<String, Object> fieldMapping, Object value, TestCo
7572
if (syntheticSourceKeep.equals("all")) {
7673
return exactValuesFromSource(values, nullValue, false);
7774
}
78-
if (syntheticSourceKeep.equals("arrays") && extractedFieldValues.documentHasObjectArrays()) {
79-
return exactValuesFromSource(values, nullValue, false);
80-
}
8175

8276
// synthetic source and doc_values are present
8377
if (hasDocValues(fieldMapping, true)) {
@@ -112,42 +106,39 @@ private Object exactValuesFromSource(Object value, GeoPoint nullValue, boolean n
112106
return maybeFoldList(resultList);
113107
}
114108

115-
private record ExtractedFieldValues(Object values, boolean documentHasObjectArrays) {}
116-
117109
@Override
118110
protected Object getFieldValue(Map<String, Object> document, String fieldName) {
119111
var extracted = new ArrayList<>();
120-
var documentHasObjectArrays = processLevel(document, fieldName, extracted, false);
112+
processLevel(document, fieldName, extracted);
121113

122114
if (extracted.size() == 1) {
123-
return new ExtractedFieldValues(extracted.get(0), documentHasObjectArrays);
115+
return extracted.get(0) ;
124116
}
125117

126-
return new ExtractedFieldValues(extracted, documentHasObjectArrays);
118+
return extracted;
127119
}
128120

129121
@SuppressWarnings("unchecked")
130-
private boolean processLevel(Map<String, Object> level, String field, ArrayList<Object> extracted, boolean documentHasObjectArrays) {
122+
private void processLevel(Map<String, Object> level, String field, ArrayList<Object> extracted) {
131123
if (field.contains(".") == false) {
132124
var value = level.get(field);
133125
processLeafLevel(value, extracted);
134-
return documentHasObjectArrays;
126+
return;
135127
}
136128

137129
var nameInLevel = field.split("\\.")[0];
138130
var entry = level.get(nameInLevel);
139131
if (entry instanceof Map<?, ?> m) {
140-
return processLevel((Map<String, Object>) m, field.substring(field.indexOf('.') + 1), extracted, documentHasObjectArrays);
132+
processLevel((Map<String, Object>) m, field.substring(field.indexOf('.') + 1), extracted);
133+
return;
141134
}
142135
if (entry instanceof List<?> l) {
143136
for (var object : l) {
144-
processLevel((Map<String, Object>) object, field.substring(field.indexOf('.') + 1), extracted, true);
137+
processLevel((Map<String, Object>) object, field.substring(field.indexOf('.') + 1), extracted);
145138
}
146-
return true;
139+
return;
147140
}
148-
149141
assert false : "unexpected document structure";
150-
return false;
151142
}
152143

153144
private void processLeafLevel(Object value, ArrayList<Object> extracted) {

0 commit comments

Comments
 (0)