Skip to content

Commit 9b51fc7

Browse files
Fix MatchOnlyTextFieldMapper Retaining a Reference to its Builder (#77201) (#77233)
Just like #77131 but for the `MatchOnlyTextFieldMapper`. Also, cleaned up a few other minor things in it to make the constructor code for this class easier to follow.
1 parent 68fc062 commit 9b51fc7

File tree

1 file changed

+12
-36
lines changed

1 file changed

+12
-36
lines changed

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

Lines changed: 12 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141

4242
import java.io.IOException;
4343
import java.io.UncheckedIOException;
44-
import java.util.Arrays;
4544
import java.util.Collections;
4645
import java.util.List;
4746
import java.util.Map;
@@ -72,10 +71,6 @@ public static class Defaults {
7271

7372
}
7473

75-
private static Builder builder(FieldMapper in) {
76-
return ((MatchOnlyTextFieldMapper) in).builder;
77-
}
78-
7974
public static class Builder extends FieldMapper.Builder {
8075

8176
private final Version indexCreatedVersion;
@@ -91,37 +86,30 @@ public Builder(String name, IndexAnalyzers indexAnalyzers) {
9186
public Builder(String name, Version indexCreatedVersion, IndexAnalyzers indexAnalyzers) {
9287
super(name);
9388
this.indexCreatedVersion = indexCreatedVersion;
94-
this.analyzers = new TextParams.Analyzers(indexAnalyzers, m -> builder(m).analyzers);
95-
}
96-
97-
public Builder addMultiField(FieldMapper.Builder builder) {
98-
this.multiFieldsBuilder.add(builder);
99-
return this;
89+
this.analyzers = new TextParams.Analyzers(indexAnalyzers, m -> ((MatchOnlyTextFieldMapper) m).analyzers);
10090
}
10191

10292
@Override
10393
protected List<Parameter<?>> getParameters() {
104-
return Arrays.asList(meta);
94+
return org.elasticsearch.core.List.of(meta);
10595
}
10696

107-
private MatchOnlyTextFieldType buildFieldType(FieldType fieldType, ContentPath contentPath) {
97+
private MatchOnlyTextFieldType buildFieldType(ContentPath contentPath) {
10898
NamedAnalyzer searchAnalyzer = analyzers.getSearchAnalyzer();
10999
NamedAnalyzer searchQuoteAnalyzer = analyzers.getSearchQuoteAnalyzer();
110100
NamedAnalyzer indexAnalyzer = analyzers.getIndexAnalyzer();
111-
TextSearchInfo tsi = new TextSearchInfo(fieldType, null, searchAnalyzer, searchQuoteAnalyzer);
112-
MatchOnlyTextFieldType ft = new MatchOnlyTextFieldType(buildFullName(contentPath), tsi, indexAnalyzer, meta.getValue());
113-
return ft;
101+
TextSearchInfo tsi = new TextSearchInfo(Defaults.FIELD_TYPE, null, searchAnalyzer, searchQuoteAnalyzer);
102+
return new MatchOnlyTextFieldType(buildFullName(contentPath), tsi, indexAnalyzer, meta.getValue());
114103
}
115104

116105
@Override
117106
public MatchOnlyTextFieldMapper build(ContentPath contentPath) {
118-
MatchOnlyTextFieldType tft = buildFieldType(Defaults.FIELD_TYPE, contentPath);
107+
MatchOnlyTextFieldType tft = buildFieldType(contentPath);
119108
MultiFields multiFields = multiFieldsBuilder.build(this, contentPath);
120109
return new MatchOnlyTextFieldMapper(
121110
name,
122111
Defaults.FIELD_TYPE,
123112
tft,
124-
analyzers.getIndexAnalyzer(),
125113
multiFields,
126114
copyTo.build(),
127115
this
@@ -142,19 +130,6 @@ public MatchOnlyTextFieldType(String name, TextSearchInfo tsi, Analyzer indexAna
142130
this.textFieldType = new TextFieldType(name);
143131
}
144132

145-
public MatchOnlyTextFieldType(String name, boolean stored, Map<String, String> meta) {
146-
super(
147-
name,
148-
true,
149-
stored,
150-
false,
151-
new TextSearchInfo(Defaults.FIELD_TYPE, null, Lucene.STANDARD_ANALYZER, Lucene.STANDARD_ANALYZER),
152-
meta
153-
);
154-
this.indexAnalyzer = Lucene.STANDARD_ANALYZER;
155-
this.textFieldType = new TextFieldType(name);
156-
}
157-
158133
public MatchOnlyTextFieldType(String name) {
159134
this(
160135
name,
@@ -292,28 +267,29 @@ public IndexFieldData.Builder fielddataBuilder(String fullyQualifiedIndexName, S
292267

293268
}
294269

295-
private final Builder builder;
270+
private final Version indexCreatedVersion;
271+
private final TextParams.Analyzers analyzers;
296272
private final FieldType fieldType;
297273

298274
private MatchOnlyTextFieldMapper(
299275
String simpleName,
300276
FieldType fieldType,
301277
MatchOnlyTextFieldType mappedFieldType,
302-
NamedAnalyzer indexAnalyzer,
303278
MultiFields multiFields,
304279
CopyTo copyTo,
305280
Builder builder
306281
) {
307-
super(simpleName, mappedFieldType, indexAnalyzer, multiFields, copyTo);
282+
super(simpleName, mappedFieldType, builder.analyzers.getIndexAnalyzer(), multiFields, copyTo);
308283
assert mappedFieldType.getTextSearchInfo().isTokenized();
309284
assert mappedFieldType.hasDocValues() == false;
310285
this.fieldType = fieldType;
311-
this.builder = builder;
286+
this.indexCreatedVersion = builder.indexCreatedVersion;
287+
this.analyzers = builder.analyzers;
312288
}
313289

314290
@Override
315291
public FieldMapper.Builder getMergeBuilder() {
316-
return new Builder(simpleName(), builder.indexCreatedVersion, builder.analyzers.indexAnalyzers).init(this);
292+
return new Builder(simpleName(), indexCreatedVersion, analyzers.indexAnalyzers).init(this);
317293
}
318294

319295
@Override

0 commit comments

Comments
 (0)