Skip to content

Commit 9d91867

Browse files
authored
Fix synthetic source field names for multi-fields (elastic#112850) (elastic#112871)
* Fix synthetic source field names for multi-fields * enable logsdb in randomized tests * Revert "enable logsdb in randomized tests" This reverts commit 2e2c22e. * Update docs/changelog/112850.yaml * fix (cherry picked from commit 86a88d7)
1 parent 96cc923 commit 9d91867

File tree

6 files changed

+22
-11
lines changed

6 files changed

+22
-11
lines changed

docs/changelog/112850.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 112850
2+
summary: Fix synthetic source field names for multi-fields
3+
area: Mapping
4+
type: bug
5+
issues: []

modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ public MatchOnlyTextFieldType fieldType() {
433433

434434
@Override
435435
protected SyntheticSourceSupport syntheticSourceSupport() {
436-
var loader = new StringStoredFieldFieldLoader(fieldType().storedFieldNameForSyntheticSource(), leafName()) {
436+
var loader = new StringStoredFieldFieldLoader(fieldType().storedFieldNameForSyntheticSource(), fieldType().name(), leafName()) {
437437
@Override
438438
protected void write(XContentBuilder b, Object value) throws IOException {
439439
b.value((String) value);

plugins/mapper-annotated-text/src/main/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ protected void write(XContentBuilder b, Object value) throws IOException {
582582

583583
var kwd = TextFieldMapper.SyntheticSourceHelper.getKeywordFieldMapperForSyntheticSource(this);
584584
if (kwd != null) {
585-
return new SyntheticSourceSupport.Native(kwd.syntheticFieldLoader(leafName()));
585+
return new SyntheticSourceSupport.Native(kwd.syntheticFieldLoader(fullPath(), leafName()));
586586
}
587587

588588
return super.syntheticSourceSupport();

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,13 +1037,13 @@ protected SyntheticSourceSupport syntheticSourceSupport() {
10371037
}
10381038

10391039
if (fieldType.stored() || hasDocValues) {
1040-
return new SyntheticSourceSupport.Native(syntheticFieldLoader(leafName()));
1040+
return new SyntheticSourceSupport.Native(syntheticFieldLoader(fullPath(), leafName()));
10411041
}
10421042

10431043
return super.syntheticSourceSupport();
10441044
}
10451045

1046-
public SourceLoader.SyntheticFieldLoader syntheticFieldLoader(String simpleName) {
1046+
public SourceLoader.SyntheticFieldLoader syntheticFieldLoader(String fullFieldName, String leafFieldName) {
10471047
assert fieldType.stored() || hasDocValues;
10481048

10491049
var layers = new ArrayList<CompositeSyntheticFieldLoader.Layer>();
@@ -1081,6 +1081,6 @@ protected void writeValue(Object value, XContentBuilder b) throws IOException {
10811081
});
10821082
}
10831083

1084-
return new CompositeSyntheticFieldLoader(simpleName, fullPath(), layers);
1084+
return new CompositeSyntheticFieldLoader(leafFieldName, fullFieldName, layers);
10851085
}
10861086
}

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,25 @@
1919
import static java.util.Collections.emptyList;
2020

2121
public abstract class StringStoredFieldFieldLoader implements SourceLoader.SyntheticFieldLoader {
22-
private final String name;
22+
private final String storedFieldLoaderName;
23+
private final String fullName;
2324
private final String simpleName;
2425

2526
private List<Object> values = emptyList();
2627

27-
public StringStoredFieldFieldLoader(String name, String simpleName) {
28-
this.name = name;
28+
public StringStoredFieldFieldLoader(String fullName, String simpleName) {
29+
this(fullName, fullName, simpleName);
30+
}
31+
32+
public StringStoredFieldFieldLoader(String storedFieldLoaderName, String fullName, String simpleName) {
33+
this.storedFieldLoaderName = storedFieldLoaderName;
34+
this.fullName = fullName;
2935
this.simpleName = simpleName;
3036
}
3137

3238
@Override
3339
public final Stream<Map.Entry<String, StoredFieldLoader>> storedFieldLoaders() {
34-
return Stream.of(Map.entry(name, newValues -> values = newValues));
40+
return Stream.of(Map.entry(storedFieldLoaderName, newValues -> values = newValues));
3541
}
3642

3743
@Override
@@ -72,6 +78,6 @@ public final DocValuesLoader docValuesLoader(LeafReader reader, int[] docIdsInLe
7278

7379
@Override
7480
public String fieldName() {
75-
return name;
81+
return fullName;
7682
}
7783
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1462,7 +1462,7 @@ protected void write(XContentBuilder b, Object value) throws IOException {
14621462

14631463
var kwd = SyntheticSourceHelper.getKeywordFieldMapperForSyntheticSource(this);
14641464
if (kwd != null) {
1465-
return new SyntheticSourceSupport.Native(kwd.syntheticFieldLoader(leafName()));
1465+
return new SyntheticSourceSupport.Native(kwd.syntheticFieldLoader(fullPath(), leafName()));
14661466
}
14671467

14681468
return super.syntheticSourceSupport();

0 commit comments

Comments
 (0)