diff --git a/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java index 62d7d9a6afda0..7e2bae72340bc 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java @@ -17,22 +17,19 @@ import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.time.DateMathParser; import org.elasticsearch.common.unit.Fuzziness; -import org.elasticsearch.common.xcontent.ToXContent; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptContext; import org.elasticsearch.script.ScriptType; import org.elasticsearch.search.lookup.SearchLookup; -import java.io.IOException; import java.time.ZoneId; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Objects; import java.util.function.Function; import static org.elasticsearch.search.SearchService.ALLOW_EXPENSIVE_QUERIES; @@ -40,32 +37,20 @@ /** * Abstract base {@linkplain MappedFieldType} for runtime fields based on a script. */ -abstract class AbstractScriptFieldType extends MappedFieldType implements RuntimeField { +abstract class AbstractScriptFieldType extends MappedFieldType { + protected final Script script; private final Function factory; - private final ToXContent toXContent; AbstractScriptFieldType( String name, Function factory, Script script, - Map meta, - ToXContent toXContent + Map meta ) { super(name, false, false, false, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); this.factory = factory; - this.script = script; - this.toXContent = toXContent; - } - - @Override - public final Collection asMappedFieldTypes() { - return Collections.singleton(this); - } - - @Override - public final void doXContentBody(XContentBuilder builder, Params params) throws IOException { - toXContent.toXContent(builder, params); + this.script = Objects.requireNonNull(script); } @Override @@ -205,7 +190,7 @@ protected final LeafFactory leafFactory(SearchExecutionContext context) { // Placeholder Script for source-only fields // TODO rework things so that we don't need this - private static final Script DEFAULT_SCRIPT = new Script(""); + protected static final Script DEFAULT_SCRIPT = new Script(""); abstract static class Builder extends RuntimeField.Builder { private final ScriptContext scriptContext; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/BooleanScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/BooleanScriptFieldType.java index e21763ccb9891..27c43e467dd3d 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/BooleanScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/BooleanScriptFieldType.java @@ -37,22 +37,42 @@ public final class BooleanScriptFieldType extends AbstractScriptFieldType(name, BooleanFieldScript.CONTEXT, BooleanFieldScript.PARSE_FROM_SOURCE) { @Override RuntimeField newRuntimeField(BooleanFieldScript.Factory scriptFactory) { - return new BooleanScriptFieldType(name, scriptFactory, getScript(), meta(), this); + return runtimeField(name, this, scriptFactory, getScript(), meta()); } }); - public BooleanScriptFieldType(String name) { - this(name, BooleanFieldScript.PARSE_FROM_SOURCE, null, Collections.emptyMap(), (builder, params) -> builder); + private static RuntimeField runtimeField( + String name, + ToXContent toXContent, + BooleanFieldScript.Factory scriptFactory, + Script script, + Map meta + ) { + return new LeafRuntimeField(name, new BooleanScriptFieldType(name, scriptFactory, script, meta), toXContent) { + @Override + public String typeName() { + return BooleanFieldMapper.CONTENT_TYPE; + } + }; + } + + public static RuntimeField sourceOnly(String name) { + return runtimeField( + name, + (builder, params) -> builder, + BooleanFieldScript.PARSE_FROM_SOURCE, + DEFAULT_SCRIPT, + Collections.emptyMap() + ); } BooleanScriptFieldType( String name, BooleanFieldScript.Factory scriptFactory, Script script, - Map meta, - ToXContent toXContent + Map meta ) { - super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta, toXContent); + super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DateScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/DateScriptFieldType.java index 3f1e0cfafdb51..4aba18bbf099d 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DateScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DateScriptFieldType.java @@ -82,20 +82,42 @@ RuntimeField newRuntimeField(DateFieldScript.Factory scriptFactory) { String pattern = format.getValue() == null ? DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.pattern() : format.getValue(); Locale locale = this.locale.getValue() == null ? Locale.ROOT : this.locale.getValue(); DateFormatter dateTimeFormatter = DateFormatter.forPattern(pattern).withLocale(locale); - return new DateScriptFieldType(name, scriptFactory, dateTimeFormatter, getScript(), meta(), this); + return runtimeField(name, this, dateTimeFormatter, scriptFactory, getScript(), meta()); } }); private final DateFormatter dateTimeFormatter; private final DateMathParser dateMathParser; - public DateScriptFieldType(String name, DateFormatter dateTimeFormatter) { - this(name, DateFieldScript.PARSE_FROM_SOURCE, dateTimeFormatter, null, Collections.emptyMap(), (builder, params) -> { - if (DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.pattern().equals(dateTimeFormatter.pattern()) == false) { - builder.field("format", dateTimeFormatter.pattern()); + private static RuntimeField runtimeField( + String name, + ToXContent toXContent, + DateFormatter dateFormatter, + DateFieldScript.Factory scriptFactory, + Script script, + Map meta + ) { + return new LeafRuntimeField(name, new DateScriptFieldType(name, scriptFactory, dateFormatter, script, meta), toXContent) { + @Override + public String typeName() { + return DateFieldMapper.CONTENT_TYPE; } - return builder; - }); + }; + } + + public static RuntimeField sourceOnly(String name, DateFormatter dateTimeFormatter) { + return runtimeField( + name, + (builder, params) -> { + if (DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.pattern().equals(dateTimeFormatter.pattern()) == false) { + builder.field("format", dateTimeFormatter.pattern()); + } + return builder; + }, + dateTimeFormatter, + DateFieldScript.PARSE_FROM_SOURCE, + DEFAULT_SCRIPT, + Collections.emptyMap()); } DateScriptFieldType( @@ -103,11 +125,10 @@ public DateScriptFieldType(String name, DateFormatter dateTimeFormatter) { DateFieldScript.Factory scriptFactory, DateFormatter dateTimeFormatter, Script script, - Map meta, - ToXContent toXContent + Map meta ) { super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup, dateTimeFormatter), - script, meta, toXContent); + script, meta); this.dateTimeFormatter = dateTimeFormatter; this.dateMathParser = dateTimeFormatter.toDateMathParser(); } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DoubleScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/DoubleScriptFieldType.java index a870b4284b51d..8f61002d088a8 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DoubleScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DoubleScriptFieldType.java @@ -38,22 +38,41 @@ public final class DoubleScriptFieldType extends AbstractScriptFieldType(name, DoubleFieldScript.CONTEXT, DoubleFieldScript.PARSE_FROM_SOURCE) { @Override RuntimeField newRuntimeField(DoubleFieldScript.Factory scriptFactory) { - return new DoubleScriptFieldType(name, scriptFactory, getScript(), meta(), this); + return runtimeField(name, this, scriptFactory, getScript(), meta()); } }); - public DoubleScriptFieldType(String name) { - this(name, DoubleFieldScript.PARSE_FROM_SOURCE, null, Collections.emptyMap(), (builder, params) -> builder); + private static RuntimeField runtimeField( + String name, + ToXContent toXContent, + DoubleFieldScript.Factory scriptFactory, + Script script, + Map meta + ) { + return new LeafRuntimeField(name, new DoubleScriptFieldType(name, scriptFactory, script, meta), toXContent) { + @Override + public String typeName() { + return NumberType.DOUBLE.typeName(); + } + }; + } + + public static RuntimeField sourceOnly(String name) { + return runtimeField( + name, + (builder, params) -> builder, + DoubleFieldScript.PARSE_FROM_SOURCE, + DEFAULT_SCRIPT, + Collections.emptyMap()); } DoubleScriptFieldType( String name, DoubleFieldScript.Factory scriptFactory, Script script, - Map meta, - ToXContent toXContent + Map meta ) { - super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta, toXContent); + super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DynamicFieldsBuilder.java b/server/src/main/java/org/elasticsearch/index/mapper/DynamicFieldsBuilder.java index d479a74a7c322..95069b7c2c191 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DynamicFieldsBuilder.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DynamicFieldsBuilder.java @@ -320,31 +320,31 @@ static void createDynamicField(RuntimeField runtimeField, ParseContext context) @Override public void newDynamicStringField(ParseContext context, String name) { String fullName = context.path().pathAsText(name); - createDynamicField(new KeywordScriptFieldType(fullName), context); + createDynamicField(KeywordScriptFieldType.sourceOnly(fullName), context); } @Override public void newDynamicLongField(ParseContext context, String name) { String fullName = context.path().pathAsText(name); - createDynamicField(new LongScriptFieldType(fullName), context); + createDynamicField(LongScriptFieldType.sourceOnly(fullName), context); } @Override public void newDynamicDoubleField(ParseContext context, String name) { String fullName = context.path().pathAsText(name); - createDynamicField(new DoubleScriptFieldType(fullName), context); + createDynamicField(DoubleScriptFieldType.sourceOnly(fullName), context); } @Override public void newDynamicBooleanField(ParseContext context, String name) { String fullName = context.path().pathAsText(name); - createDynamicField(new BooleanScriptFieldType(fullName), context); + createDynamicField(BooleanScriptFieldType.sourceOnly(fullName), context); } @Override public void newDynamicDateField(ParseContext context, String name, DateFormatter dateFormatter) { String fullName = context.path().pathAsText(name); - createDynamicField(new DateScriptFieldType(fullName, dateFormatter), context); + createDynamicField(DateScriptFieldType.sourceOnly(fullName, dateFormatter), context); } } } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/GeoPointScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/GeoPointScriptFieldType.java index e38107caa2abf..681bb0fbf554d 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/GeoPointScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/GeoPointScriptFieldType.java @@ -18,7 +18,6 @@ import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.time.DateMathParser; import org.elasticsearch.common.unit.DistanceUnit; -import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.geometry.Geometry; import org.elasticsearch.index.fielddata.GeoPointScriptFieldData; import org.elasticsearch.index.query.SearchExecutionContext; @@ -40,7 +39,12 @@ public final class GeoPointScriptFieldType extends AbstractScriptFieldType(name, GeoPointFieldScript.CONTEXT, GeoPointFieldScript.PARSE_FROM_SOURCE) { @Override RuntimeField newRuntimeField(GeoPointFieldScript.Factory scriptFactory) { - return new GeoPointScriptFieldType(name, scriptFactory, getScript(), meta(), this); + return new LeafRuntimeField(name, new GeoPointScriptFieldType(name, scriptFactory, getScript(), meta()), this) { + @Override + public String typeName() { + return GeoPointFieldMapper.CONTENT_TYPE; + } + }; } }); @@ -48,10 +52,9 @@ RuntimeField newRuntimeField(GeoPointFieldScript.Factory scriptFactory) { String name, GeoPointFieldScript.Factory scriptFactory, Script script, - Map meta, - ToXContent toXContent + Map meta ) { - super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta, toXContent); + super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/IpScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/IpScriptFieldType.java index 3d009c57cdd36..327325ecfb702 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/IpScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/IpScriptFieldType.java @@ -13,13 +13,12 @@ import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.core.Tuple; import org.elasticsearch.common.lucene.BytesRefs; import org.elasticsearch.common.network.InetAddresses; import org.elasticsearch.common.time.DateMathParser; import org.elasticsearch.common.util.BigArrays; import org.elasticsearch.common.util.BytesRefHash; -import org.elasticsearch.common.xcontent.ToXContent; +import org.elasticsearch.core.Tuple; import org.elasticsearch.index.fielddata.IpScriptFieldData; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.script.IpFieldScript; @@ -46,7 +45,12 @@ public final class IpScriptFieldType extends AbstractScriptFieldType(name, IpFieldScript.CONTEXT, IpFieldScript.PARSE_FROM_SOURCE) { @Override RuntimeField newRuntimeField(IpFieldScript.Factory scriptFactory) { - return new IpScriptFieldType(name, scriptFactory, getScript(), meta(), this); + return new LeafRuntimeField(name, new IpScriptFieldType(name, scriptFactory, getScript(), meta()), this) { + @Override + public String typeName() { + return IpFieldMapper.CONTENT_TYPE; + } + }; } }); @@ -54,10 +58,9 @@ RuntimeField newRuntimeField(IpFieldScript.Factory scriptFactory) { String name, IpFieldScript.Factory scriptFactory, Script script, - Map meta, - ToXContent toXContent + Map meta ) { - super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta, toXContent); + super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/KeywordScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/KeywordScriptFieldType.java index 669697c604e37..5ed286ee21c7d 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/KeywordScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/KeywordScriptFieldType.java @@ -45,22 +45,41 @@ public final class KeywordScriptFieldType extends AbstractScriptFieldType(name, StringFieldScript.CONTEXT, StringFieldScript.PARSE_FROM_SOURCE) { @Override RuntimeField newRuntimeField(StringFieldScript.Factory scriptFactory) { - return new KeywordScriptFieldType(name, scriptFactory, getScript(), meta(), this); + return runtimeField(name, this, scriptFactory, getScript(), meta()); } }); - public KeywordScriptFieldType(String name) { - this(name, StringFieldScript.PARSE_FROM_SOURCE, null, Collections.emptyMap(), (builder, params) -> builder); + private static RuntimeField runtimeField( + String name, + ToXContent toXContent, + StringFieldScript.Factory scriptFactory, + Script script, + Map meta + ) { + return new LeafRuntimeField(name, new KeywordScriptFieldType(name, scriptFactory, script, meta), toXContent) { + @Override + public String typeName() { + return KeywordFieldMapper.CONTENT_TYPE; + } + }; + } + + public static RuntimeField sourceOnly(String name) { + return runtimeField( + name, + (builder, params) -> builder, + StringFieldScript.PARSE_FROM_SOURCE, + DEFAULT_SCRIPT, + Collections.emptyMap()); } public KeywordScriptFieldType( String name, StringFieldScript.Factory scriptFactory, Script script, - Map meta, - ToXContent toXContent + Map meta ) { - super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta, toXContent); + super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/LeafRuntimeField.java b/server/src/main/java/org/elasticsearch/index/mapper/LeafRuntimeField.java new file mode 100644 index 0000000000000..11a746021537d --- /dev/null +++ b/server/src/main/java/org/elasticsearch/index/mapper/LeafRuntimeField.java @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.index.mapper; + +import org.elasticsearch.common.xcontent.ToXContent; +import org.elasticsearch.common.xcontent.XContentBuilder; + +import java.io.IOException; +import java.util.Collection; +import java.util.Collections; + +/** + * RuntimeField base class for leaf fields that will only ever return + * a single MappedFieldType from {@link RuntimeField#asMappedFieldTypes()} + */ +public abstract class LeafRuntimeField implements RuntimeField { + + protected final String name; + protected final ToXContent toXContent; + protected final MappedFieldType mappedFieldType; + + public LeafRuntimeField(String name, MappedFieldType mappedFieldType, ToXContent toXContent) { + this.name = name; + this.toXContent = toXContent; + this.mappedFieldType = mappedFieldType; + } + + @Override + public String name() { + return name; + } + + @Override + public final Collection asMappedFieldTypes() { + return Collections.singleton(mappedFieldType); + } + + @Override + public final void doXContentBody(XContentBuilder builder, Params params) throws IOException { + toXContent.toXContent(builder, params); + } +} diff --git a/server/src/main/java/org/elasticsearch/index/mapper/LongScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/LongScriptFieldType.java index 164587095888c..1758d3acec90b 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/LongScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/LongScriptFieldType.java @@ -38,22 +38,41 @@ public final class LongScriptFieldType extends AbstractScriptFieldType(name, LongFieldScript.CONTEXT, LongFieldScript.PARSE_FROM_SOURCE) { @Override RuntimeField newRuntimeField(LongFieldScript.Factory scriptFactory) { - return new LongScriptFieldType(name, scriptFactory, getScript(), meta(), this); + return runtimeField(name, this, scriptFactory, getScript(), meta()); } }); - public LongScriptFieldType(String name) { - this(name, LongFieldScript.PARSE_FROM_SOURCE, null, Collections.emptyMap(), (builder, params) -> builder); + private static RuntimeField runtimeField( + String name, + ToXContent toXContent, + LongFieldScript.Factory scriptFactory, + Script script, + Map meta + ) { + return new LeafRuntimeField(name, new LongScriptFieldType(name, scriptFactory, script, meta), toXContent) { + @Override + public String typeName() { + return NumberType.LONG.typeName(); + } + }; + } + + public static RuntimeField sourceOnly(String name) { + return runtimeField( + name, + (builder, params) -> builder, + LongFieldScript.PARSE_FROM_SOURCE, + DEFAULT_SCRIPT, + Collections.emptyMap()); } public LongScriptFieldType( String name, LongFieldScript.Factory scriptFactory, Script script, - Map meta, - ToXContent toXContent + Map meta ) { - super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta, toXContent); + super(name, searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup), script, meta); } @Override diff --git a/server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java index 4a4279cc02f41..2ee31ceb91e09 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java @@ -426,6 +426,6 @@ public void execute() { } private static BooleanScriptFieldType build(Script script) { - return new BooleanScriptFieldType("test", factory(script), script, emptyMap(), (builder, params) -> builder); + return new BooleanScriptFieldType("test", factory(script), script, emptyMap()); } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/DateScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/DateScriptFieldTypeTests.java index a41b747bd7635..1b91110b8c631 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/DateScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/DateScriptFieldTypeTests.java @@ -498,7 +498,7 @@ public void execute() { } private static DateScriptFieldType build(Script script, DateFormatter dateTimeFormatter) { - return new DateScriptFieldType("test", factory(script), dateTimeFormatter, script, emptyMap(), (builder, params) -> builder); + return new DateScriptFieldType("test", factory(script), dateTimeFormatter, script, emptyMap()); } private static long randomDate() { diff --git a/server/src/test/java/org/elasticsearch/index/mapper/DoubleScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/DoubleScriptFieldTypeTests.java index acdbabcf4b39a..ed18ebe63a5c5 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/DoubleScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/DoubleScriptFieldTypeTests.java @@ -271,6 +271,6 @@ public void execute() { } private static DoubleScriptFieldType build(Script script) { - return new DoubleScriptFieldType("test", factory(script), script, emptyMap(), (builder, params) -> builder); + return new DoubleScriptFieldType("test", factory(script), script, emptyMap()); } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/GeoPointScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/GeoPointScriptFieldTypeTests.java index a6b97876afde9..90d282fb52048 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/GeoPointScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/GeoPointScriptFieldTypeTests.java @@ -231,6 +231,6 @@ public void execute() { } private static GeoPointScriptFieldType build(Script script) { - return new GeoPointScriptFieldType("test", factory(script), script, emptyMap(), (builder, params) -> builder); + return new GeoPointScriptFieldType("test", factory(script), script, emptyMap()); } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/IpScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/IpScriptFieldTypeTests.java index 4432c2b5f3bfe..4733f3c4e4069 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/IpScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/IpScriptFieldTypeTests.java @@ -288,6 +288,6 @@ public void execute() { } private static IpScriptFieldType build(Script script) { - return new IpScriptFieldType("test", factory(script), script, emptyMap(), (builder, params) -> builder); + return new IpScriptFieldType("test", factory(script), script, emptyMap()); } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/KeywordScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/KeywordScriptFieldTypeTests.java index 128f1ce1e87d9..f772eeff40463 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/KeywordScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/KeywordScriptFieldTypeTests.java @@ -403,6 +403,6 @@ public void execute() { } private static KeywordScriptFieldType build(Script script) { - return new KeywordScriptFieldType("test", factory(script), script, emptyMap(), (builder, params) -> builder); + return new KeywordScriptFieldType("test", factory(script), script, emptyMap()); } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/LongScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/LongScriptFieldTypeTests.java index 51b094de22dea..de285824c9661 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/LongScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/LongScriptFieldTypeTests.java @@ -314,6 +314,6 @@ public void execute() { } private static LongScriptFieldType build(Script script) { - return new LongScriptFieldType("test", factory(script), script, emptyMap(), (builder, params) -> builder); + return new LongScriptFieldType("test", factory(script), script, emptyMap()); } } diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorTests.java index 2f44ba6b8a821..dd90efa033eda 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregatorTests.java @@ -469,7 +469,7 @@ public void execute() { emit((long) getDoc().get(NUMBER_FIELD_NAME).get(0)); } }; - MappedFieldType dummyFt = new LongScriptFieldType("dummy", scriptFactory, new Script("test"), Map.of(), null); + MappedFieldType dummyFt = new LongScriptFieldType("dummy", scriptFactory, new Script("test"), Map.of()); MappedFieldType numberFt = new NumberFieldMapper.NumberFieldType(NUMBER_FIELD_NAME, NumberFieldMapper.NumberType.INTEGER); debugTestCase( new RangeAggregationBuilder("r").field("dummy").addRange(0, 1).addRange(1, 2).addRange(2, 3), diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregatorTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregatorTests.java index 69836f590eaa1..fbb7b66eacc61 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregatorTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregatorTests.java @@ -1928,7 +1928,7 @@ public void testWithFilterAndPreciseSize() throws IOException { .add(new TermQuery(new Term("k", "b")), Occur.SHOULD) .add(new TermQuery(new Term("k", "c")), Occur.SHOULD) .build(); - debugTestCase(builder, topLevel, buildIndex, + debugTestCase(builder, topLevel, buildIndex, (StringTerms terms, Class impl, Map> debug) -> { assertThat(terms.getBuckets().stream().map(StringTerms.Bucket::getKey).collect(toList()), equalTo(List.of("b", "c"))); assertThat(terms.getBuckets().stream().map(StringTerms.Bucket::getDocCount).collect(toList()), equalTo(List.of(1L, 1L))); @@ -2037,7 +2037,7 @@ public void execute() { new BytesRef("stuff"), new BytesRef("more_stuff"), new BytesRef("other_stuff"), }; MappedFieldType keywordFt = new KeywordFieldType("k", true, true, Collections.emptyMap()); - MappedFieldType dummyFt = new KeywordScriptFieldType("dummy", scriptFactory, new Script("test"), Map.of(), null); + MappedFieldType dummyFt = new KeywordScriptFieldType("dummy", scriptFactory, new Script("test"), Map.of()); debugTestCase(new TermsAggregationBuilder("t").field("dummy"), new MatchAllDocsQuery(), iw -> { for (int d = 0; d < totalDocs; d++) { BytesRef value = values[d % values.length];