Skip to content

Commit d9e0714

Browse files
committed
Add ScriptFactory#isParsedFromSource()
1 parent c675a94 commit d9e0714

18 files changed

+72
-13
lines changed

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,21 @@ public abstract class AbstractScriptFieldType<LeafFactory> extends MappedFieldTy
4949
protected final Script script;
5050
private final Function<SearchLookup, LeafFactory> factory;
5151
private final boolean isResultDeterministic;
52+
private final boolean isParsedFromSource;
5253

5354
protected AbstractScriptFieldType(
5455
String name,
5556
Function<SearchLookup, LeafFactory> factory,
5657
Script script,
5758
boolean isResultDeterministic,
58-
Map<String, String> meta
59+
Map<String, String> meta,
60+
boolean isParsedFromSource
5961
) {
6062
super(name, false, false, false, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta);
6163
this.factory = factory;
6264
this.script = Objects.requireNonNull(script);
6365
this.isResultDeterministic = isResultDeterministic;
66+
this.isParsedFromSource = isParsedFromSource;
6467
}
6568

6669
@Override
@@ -191,9 +194,13 @@ public ValueFetcher valueFetcher(SearchExecutionContext context, String format)
191194
* Create a script leaf factory.
192195
*/
193196
protected final LeafFactory leafFactory(SearchLookup searchLookup) {
194-
String include = name();
195-
var copy = searchLookup.optimizedSourceProvider(new SourceFilter(new String[] { include }, new String[0]));
196-
return factory.apply(copy);
197+
if (isParsedFromSource) {
198+
String include = name();
199+
var copy = searchLookup.optimizedSourceProvider(new SourceFilter(new String[] { include }, new String[0]));
200+
return factory.apply(copy);
201+
} else {
202+
return factory.apply(searchLookup);
203+
}
197204
}
198205

199206
/**

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ public static RuntimeField sourceOnly(String name) {
8383
searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup, onScriptError),
8484
script,
8585
scriptFactory.isResultDeterministic(),
86-
meta
86+
meta,
87+
scriptFactory.isParsedFromSource()
8788
);
8889
}
8990

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ public static RuntimeField sourceOnly(String name, DateFormatter dateTimeFormatt
148148
searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup, dateTimeFormatter, onScriptError),
149149
script,
150150
scriptFactory.isResultDeterministic(),
151-
meta
151+
meta,
152+
scriptFactory.isParsedFromSource()
152153
);
153154
this.dateTimeFormatter = dateTimeFormatter;
154155
this.dateMathParser = dateTimeFormatter.toDateMathParser();

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ public static RuntimeField sourceOnly(String name) {
8383
searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup, onScriptError),
8484
script,
8585
scriptFactory.isResultDeterministic(),
86-
meta
86+
meta,
87+
scriptFactory.isParsedFromSource()
8788
);
8889
}
8990

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ protected GeoPointFieldScript.Factory getCompositeLeafFactory(
8383
searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup, onScriptError),
8484
script,
8585
scriptFactory.isResultDeterministic(),
86-
meta
86+
meta,
87+
scriptFactory.isParsedFromSource()
8788
);
8889
}
8990

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ protected IpFieldScript.Factory getCompositeLeafFactory(
8181
searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup, onScriptError),
8282
script,
8383
scriptFactory.isResultDeterministic(),
84-
meta
84+
meta,
85+
scriptFactory.isParsedFromSource()
8586
);
8687
}
8788

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ public KeywordScriptFieldType(
9292
searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup, onScriptError),
9393
script,
9494
scriptFactory.isResultDeterministic(),
95-
meta
95+
meta,
96+
scriptFactory.isParsedFromSource()
9697
);
9798
}
9899

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ public LongScriptFieldType(
8383
searchLookup -> scriptFactory.newFactory(name, script.getParams(), searchLookup, onScriptError),
8484
script,
8585
scriptFactory.isResultDeterministic(),
86-
meta
86+
meta,
87+
scriptFactory.isParsedFromSource()
8788
);
8889
}
8990

server/src/main/java/org/elasticsearch/script/BooleanFieldScript.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ public void execute() {
3737
public boolean isResultDeterministic() {
3838
return true;
3939
}
40+
41+
@Override
42+
public boolean isParsedFromSource() {
43+
return true;
44+
}
4045
};
4146

4247
public static Factory leafAdapter(Function<SearchLookup, CompositeFieldScript.LeafFactory> parentFactory) {

server/src/main/java/org/elasticsearch/script/DateFieldScript.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public void execute() {
4242
public boolean isResultDeterministic() {
4343
return true;
4444
}
45+
46+
@Override
47+
public boolean isParsedFromSource() {
48+
return true;
49+
}
4550
};
4651

4752
public static Factory leafAdapter(Function<SearchLookup, CompositeFieldScript.LeafFactory> parentFactory) {

0 commit comments

Comments
 (0)