Class ScriptContext<FactoryType>
ScriptContext contains the information related to a single use case and the interfaces
and methods necessary for a ScriptEngine to implement.
There are at least two (and optionally a third) related classes which must be defined.
The InstanceType is a class which users of the script api call to execute a script. It
may be stateful. Instances of
the InstanceType may be executed multiple times by a caller with different arguments. This
class must have an abstract method named execute which ScriptEngine implementations
will define.
The FactoryType is a factory class returned by the ScriptService when compiling
a script. This class must be stateless so it is cacheable by the ScriptService. It must
have one of the following:
- An abstract method named
newInstancewhich returns an instance of InstanceType - An abstract method named
newFactorywhich returns an instance of StatefulFactoryType
The StatefulFactoryType is an optional class which allows a stateful factory from the
stateless factory type required by the ScriptService. If defined, the StatefulFactoryType
must have a method named newInstance which returns an instance of InstanceType.
Both the FactoryType and StatefulFactoryType may have abstract methods to indicate
whether a variable is used in a script. These method should return a boolean and their name
should start with needs, followed by the variable name, with the first letter uppercased.
For example, to check if a variable doc is used, a method boolean needsDoc() should be added.
If the variable name starts with an underscore, for example, _score, the needs method would
be boolean needs_score().
-
Field Summary
FieldsModifier and TypeFieldDescriptionbooleanDetermines if the script can be stored as part of the cluster state.org.elasticsearch.core.TimeValueThe default expiration of a script in the cache for the context, if not overriddenintThe default size of the cache for the context if not overriddenA factory class for constructing script or stateful factory instances.Class<?>A class that is an instance of a script.org.elasticsearch.core.Tuple<Integer,org.elasticsearch.core.TimeValue>The default max compilation rate for scripts in this context.A unique identifier for this context.Class<?>A factory class for construct script instances. -
Constructor Summary
ConstructorsConstructorDescriptionScriptContext(String name, Class<FactoryType> factoryClazz)Construct a context with the related instance and compiled classes with defaults for cacheSizeDefault, cacheExpireDefault and maxCompilationRateDefault and allow scripts of this context to be stored scriptsScriptContext(String name, Class<FactoryType> factoryClazz, int cacheSizeDefault, org.elasticsearch.core.TimeValue cacheExpireDefault, org.elasticsearch.core.Tuple<Integer,org.elasticsearch.core.TimeValue> maxCompilationRateDefault, boolean allowStoredScript)Construct a context with the related instance and compiled classes with caller provided cache defaults -
Method Summary
-
Field Details
-
name
A unique identifier for this context. -
factoryClazz
A factory class for constructing script or stateful factory instances. -
statefulFactoryClazz
A factory class for construct script instances. -
instanceClazz
A class that is an instance of a script. -
cacheSizeDefault
public final int cacheSizeDefaultThe default size of the cache for the context if not overridden -
cacheExpireDefault
public final org.elasticsearch.core.TimeValue cacheExpireDefaultThe default expiration of a script in the cache for the context, if not overridden -
maxCompilationRateDefault
public final org.elasticsearch.core.Tuple<Integer,org.elasticsearch.core.TimeValue> maxCompilationRateDefaultThe default max compilation rate for scripts in this context. Script compilation is throttled if this is exceeded -
allowStoredScript
public final boolean allowStoredScriptDetermines if the script can be stored as part of the cluster state.
-
-
Constructor Details
-
ScriptContext
public ScriptContext(String name, Class<FactoryType> factoryClazz, int cacheSizeDefault, org.elasticsearch.core.TimeValue cacheExpireDefault, org.elasticsearch.core.Tuple<Integer,org.elasticsearch.core.TimeValue> maxCompilationRateDefault, boolean allowStoredScript)Construct a context with the related instance and compiled classes with caller provided cache defaults -
ScriptContext
Construct a context with the related instance and compiled classes with defaults for cacheSizeDefault, cacheExpireDefault and maxCompilationRateDefault and allow scripts of this context to be stored scripts
-