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
newInstance
which returns an instance of InstanceType - An abstract method named
newFactory
which 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
Modifier and TypeFieldDescriptionboolean
Determines if the script can be stored as part of the cluster state.org.elasticsearch.core.TimeValue
The default expiration of a script in the cache for the context, if not overriddenint
The 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
ConstructorDescriptionScriptContext(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
-