72
72
import org .elasticsearch .script .ScoreScript ;
73
73
import org .elasticsearch .script .Script ;
74
74
import org .elasticsearch .script .ScriptContext ;
75
+ import org .elasticsearch .script .ScriptModule ;
75
76
import org .elasticsearch .script .ScriptService ;
76
77
import org .elasticsearch .script .ScriptType ;
77
78
import org .elasticsearch .script .StringFieldScript ;
@@ -115,23 +116,19 @@ public static class Request extends SingleShardRequest<Request> implements ToXCo
115
116
PARSER .declareObject (ConstructingObjectParser .optionalConstructorArg (), ContextSetup ::parse , CONTEXT_SETUP_FIELD );
116
117
}
117
118
118
- static final Map <String , ScriptContext <?>> SUPPORTED_CONTEXTS ;
119
-
120
- static {
121
- Map <String , ScriptContext <?>> supportedContexts = new HashMap <>();
122
- supportedContexts .put ("painless_test" , PainlessTestScript .CONTEXT );
123
- supportedContexts .put ("filter" , FilterScript .CONTEXT );
124
- supportedContexts .put ("score" , ScoreScript .CONTEXT );
125
- supportedContexts .put ("boolean_field" , BooleanFieldScript .CONTEXT );
126
- supportedContexts .put ("date_field" , DateFieldScript .CONTEXT );
127
- supportedContexts .put ("double_field" , DoubleFieldScript .CONTEXT );
128
- supportedContexts .put ("geo_point_field" , GeoPointFieldScript .CONTEXT );
129
- supportedContexts .put ("ip_field" , IpFieldScript .CONTEXT );
130
- supportedContexts .put ("long_field" , LongFieldScript .CONTEXT );
131
- supportedContexts .put ("string_field" , StringFieldScript .CONTEXT );
132
- SUPPORTED_CONTEXTS = Collections .unmodifiableMap (supportedContexts );
119
+ private static Map <String , ScriptContext <?>> getSupportedContexts () {
120
+ Map <String , ScriptContext <?>> contexts = new HashMap <>();
121
+ contexts .put (PainlessTestScript .CONTEXT .name , PainlessTestScript .CONTEXT );
122
+ contexts .put (FilterScript .CONTEXT .name , FilterScript .CONTEXT );
123
+ contexts .put (ScoreScript .CONTEXT .name , ScoreScript .CONTEXT );
124
+ for (ScriptContext <?> runtimeFieldsContext : ScriptModule .RUNTIME_FIELDS_CONTEXTS ) {
125
+ contexts .put (runtimeFieldsContext .name , runtimeFieldsContext );
126
+ }
127
+ return Collections .unmodifiableMap (contexts );
133
128
}
134
129
130
+ static final Map <String , ScriptContext <?>> SUPPORTED_CONTEXTS = getSupportedContexts ();
131
+
135
132
static ScriptContext <?> fromScriptContextName (String name ) {
136
133
ScriptContext <?> scriptContext = SUPPORTED_CONTEXTS .get (name );
137
134
if (scriptContext == null ) {
@@ -561,15 +558,15 @@ static Response innerShardOperation(Request request, ScriptService scriptService
561
558
return prepareRamIndex (request , (context , leafReaderContext ) -> {
562
559
BooleanFieldScript .Factory factory = scriptService .compile (request .script , BooleanFieldScript .CONTEXT );
563
560
BooleanFieldScript .LeafFactory leafFactory =
564
- factory .newFactory ("boolean_field" , request .getScript ().getParams (), context .lookup ());
561
+ factory .newFactory (BooleanFieldScript . CONTEXT . name , request .getScript ().getParams (), context .lookup ());
565
562
BooleanFieldScript booleanFieldScript = leafFactory .newInstance (leafReaderContext );
566
563
booleanFieldScript .runForDoc (0 );
567
564
return new Response (booleanFieldScript .asDocValues ());
568
565
}, indexService );
569
566
} else if (scriptContext == DateFieldScript .CONTEXT ) {
570
567
return prepareRamIndex (request , (context , leafReaderContext ) -> {
571
568
DateFieldScript .Factory factory = scriptService .compile (request .script , DateFieldScript .CONTEXT );
572
- DateFieldScript .LeafFactory leafFactory = factory .newFactory ("date_field" ,
569
+ DateFieldScript .LeafFactory leafFactory = factory .newFactory (DateFieldScript . CONTEXT . name ,
573
570
request .getScript ().getParams (), context .lookup (), DateFieldMapper .DEFAULT_DATE_TIME_FORMATTER );
574
571
DateFieldScript dateFieldScript = leafFactory .newInstance (leafReaderContext );
575
572
dateFieldScript .runForDoc (0 );
@@ -579,7 +576,7 @@ static Response innerShardOperation(Request request, ScriptService scriptService
579
576
return prepareRamIndex (request , (context , leafReaderContext ) -> {
580
577
DoubleFieldScript .Factory factory = scriptService .compile (request .script , DoubleFieldScript .CONTEXT );
581
578
DoubleFieldScript .LeafFactory leafFactory =
582
- factory .newFactory ("double_field" , request .getScript ().getParams (), context .lookup ());
579
+ factory .newFactory (DoubleFieldScript . CONTEXT . name , request .getScript ().getParams (), context .lookup ());
583
580
DoubleFieldScript doubleFieldScript = leafFactory .newInstance (leafReaderContext );
584
581
doubleFieldScript .runForDoc (0 );
585
582
return new Response (doubleFieldScript .asDocValues ());
@@ -588,7 +585,7 @@ static Response innerShardOperation(Request request, ScriptService scriptService
588
585
return prepareRamIndex (request , (context , leafReaderContext ) -> {
589
586
GeoPointFieldScript .Factory factory = scriptService .compile (request .script , GeoPointFieldScript .CONTEXT );
590
587
GeoPointFieldScript .LeafFactory leafFactory =
591
- factory .newFactory ("geo_point_field" , request .getScript ().getParams (), context .lookup ());
588
+ factory .newFactory (GeoPointFieldScript . CONTEXT . name , request .getScript ().getParams (), context .lookup ());
592
589
GeoPointFieldScript geoPointFieldScript = leafFactory .newInstance (leafReaderContext );
593
590
geoPointFieldScript .runForDoc (0 );
594
591
return new Response (geoPointFieldScript .asDocValues ());
@@ -597,7 +594,7 @@ static Response innerShardOperation(Request request, ScriptService scriptService
597
594
return prepareRamIndex (request , (context , leafReaderContext ) -> {
598
595
IpFieldScript .Factory factory = scriptService .compile (request .script , IpFieldScript .CONTEXT );
599
596
IpFieldScript .LeafFactory leafFactory =
600
- factory .newFactory ("ip_field" , request .getScript ().getParams (), context .lookup ());
597
+ factory .newFactory (IpFieldScript . CONTEXT . name , request .getScript ().getParams (), context .lookup ());
601
598
IpFieldScript ipFieldScript = leafFactory .newInstance (leafReaderContext );
602
599
ipFieldScript .runForDoc (0 );
603
600
return new Response (ipFieldScript .asDocValues ());
@@ -606,7 +603,7 @@ static Response innerShardOperation(Request request, ScriptService scriptService
606
603
return prepareRamIndex (request , (context , leafReaderContext ) -> {
607
604
LongFieldScript .Factory factory = scriptService .compile (request .script , LongFieldScript .CONTEXT );
608
605
LongFieldScript .LeafFactory leafFactory =
609
- factory .newFactory ("long_field" , request .getScript ().getParams (), context .lookup ());
606
+ factory .newFactory (LongFieldScript . CONTEXT . name , request .getScript ().getParams (), context .lookup ());
610
607
LongFieldScript longFieldScript = leafFactory .newInstance (leafReaderContext );
611
608
longFieldScript .runForDoc (0 );
612
609
return new Response (longFieldScript .asDocValues ());
@@ -615,7 +612,7 @@ static Response innerShardOperation(Request request, ScriptService scriptService
615
612
return prepareRamIndex (request , (context , leafReaderContext ) -> {
616
613
StringFieldScript .Factory factory = scriptService .compile (request .script , StringFieldScript .CONTEXT );
617
614
StringFieldScript .LeafFactory leafFactory =
618
- factory .newFactory ("string_field" , request .getScript ().getParams (), context .lookup ());
615
+ factory .newFactory (StringFieldScript . CONTEXT . name , request .getScript ().getParams (), context .lookup ());
619
616
StringFieldScript stringFieldScript = leafFactory .newInstance (leafReaderContext );
620
617
stringFieldScript .resultsForDoc (0 );
621
618
return new Response (stringFieldScript .asDocValues ());
0 commit comments