diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java index b103a23772a47..055f6091ac484 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java @@ -157,6 +157,7 @@ public static class MatchOnlyTextFieldType extends StringFieldType { private final Analyzer indexAnalyzer; private final TextFieldType textFieldType; + private final String originalName; public MatchOnlyTextFieldType( String name, @@ -168,6 +169,7 @@ public MatchOnlyTextFieldType( super(name, true, false, false, tsi, meta); this.indexAnalyzer = Objects.requireNonNull(indexAnalyzer); this.textFieldType = new TextFieldType(name, isSyntheticSource); + this.originalName = isSyntheticSource ? name() + "._original" : null; } public MatchOnlyTextFieldType(String name) { @@ -394,7 +396,7 @@ protected BytesRef storedToBytesRef(Object stored) { } private String storedFieldNameForSyntheticSource() { - return name() + "._original"; + return originalName; } } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/FieldArrayContext.java b/server/src/main/java/org/elasticsearch/index/mapper/FieldArrayContext.java index ca293be5f511a..f818b34d6c9bb 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/FieldArrayContext.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/FieldArrayContext.java @@ -63,7 +63,8 @@ void addToLuceneDocument(DocumentParserContext context) throws IOException { offsetToOrd[nullOffset] = -1; } - try (var streamOutput = new BytesStreamOutput()) { + int expectedSize = offsetToOrd.length + 1; // Initialize buffer to avoid unnecessary resizing, assume 1 byte per offset + size. + try (var streamOutput = new BytesStreamOutput(expectedSize)) { // Could just use vint for array length, but this allows for decoding my_field: null as -1 streamOutput.writeVInt(BitUtil.zigZagEncode(offsetToOrd.length)); for (int ord : offsetToOrd) { diff --git a/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java index b7e8e13e16839..127024f17a222 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java @@ -1058,6 +1058,7 @@ public boolean hasDocValuesSkipper() { private final boolean useDocValuesSkipper; private final String offsetsFieldName; private final SourceKeepMode indexSourceKeepMode; + private final String originalName; private KeywordFieldMapper( String simpleName, @@ -1089,6 +1090,7 @@ private KeywordFieldMapper( this.useDocValuesSkipper = useDocValuesSkipper; this.offsetsFieldName = offsetsFieldName; this.indexSourceKeepMode = indexSourceKeepMode; + this.originalName = isSyntheticSource ? fullPath() + "._original" : null; } @Override @@ -1255,7 +1257,7 @@ boolean hasNormalizer() { * for synthetic source. */ private String originalName() { - return fullPath() + "._original"; + return originalName; } @Override diff --git a/x-pack/plugin/wildcard/src/main/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapper.java b/x-pack/plugin/wildcard/src/main/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapper.java index 3e374cab327d3..77e275555deb4 100644 --- a/x-pack/plugin/wildcard/src/main/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapper.java +++ b/x-pack/plugin/wildcard/src/main/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapper.java @@ -896,6 +896,7 @@ protected String parseSourceValue(Object value) { private final int ignoreAbove; private final int ignoreAboveDefault; private final boolean storeIgnored; + private final String originalName; private WildcardFieldMapper( String simpleName, @@ -911,6 +912,7 @@ private WildcardFieldMapper( this.indexVersionCreated = indexVersionCreated; this.ignoreAbove = builder.ignoreAbove.getValue(); this.ignoreAboveDefault = builder.ignoreAboveDefault; + this.originalName = storeIgnored ? fullPath() + "._original" : null; } @Override @@ -956,7 +958,7 @@ protected void parseCreateField(DocumentParserContext context) throws IOExceptio } private String originalName() { - return fullPath() + "._original"; + return originalName; } void createFields(String value, LuceneDocument parseDoc, List fields) {