From 3f19c9aaceca5007e76fa70300fba63e250015cd Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Fri, 28 Feb 2025 17:52:17 +0100 Subject: [PATCH] Tidy up some noise during indexing with synthetic source. (#123724) --- .../index/mapper/extras/MatchOnlyTextFieldMapper.java | 4 +++- .../org/elasticsearch/index/mapper/FieldArrayContext.java | 3 ++- .../org/elasticsearch/index/mapper/KeywordFieldMapper.java | 4 +++- .../xpack/wildcard/mapper/WildcardFieldMapper.java | 4 +++- 4 files changed, 11 insertions(+), 4 deletions(-) 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 3010f08fddeb3..f344d51fb38b8 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 84fbe5dc952ce..c2b297a90ecdc 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java @@ -943,6 +943,7 @@ public boolean hasNormalizer() { private final int ignoreAbove; private final String offsetsFieldName; private final SourceKeepMode indexSourceKeepMode; + private final String originalName; private KeywordFieldMapper( String simpleName, @@ -971,6 +972,7 @@ private KeywordFieldMapper( this.ignoreAbove = builder.ignoreAbove.getValue(); this.offsetsFieldName = offsetsFieldName; this.indexSourceKeepMode = indexSourceKeepMode; + this.originalName = isSyntheticSource ? fullPath() + "._original" : null; } @Override @@ -1129,7 +1131,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 bbf02561426af..2227e458e7908 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 @@ -898,6 +898,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, @@ -913,6 +914,7 @@ private WildcardFieldMapper( this.indexVersionCreated = indexVersionCreated; this.ignoreAbove = builder.ignoreAbove.getValue(); this.ignoreAboveDefault = builder.ignoreAboveDefault; + this.originalName = storeIgnored ? fullPath() + "._original" : null; } @Override @@ -958,7 +960,7 @@ protected void parseCreateField(DocumentParserContext context) throws IOExceptio } private String originalName() { - return fullPath() + "._original"; + return originalName; } void createFields(String value, LuceneDocument parseDoc, List fields) {