Package org.elasticsearch.script
Class Script
java.lang.Object
org.elasticsearch.script.Script
- All Implemented Interfaces:
Writeable,ToXContent,ToXContentObject
public final class Script extends java.lang.Object implements ToXContentObject, Writeable
Script represents used-defined input that can be used to
compile and execute a script from the ScriptService
based on the ScriptType.
There are three types of scripts specified by ScriptType.
The following describes the expected parameters for each type of script:
-
ScriptType.INLINE-
lang- specifies the language, defaults toDEFAULT_SCRIPT_LANG -
idOrCode- specifies the code to be compiled, must not benull -
options- specifies the compiler options for this script; must not benull, use an emptyMapto specify no options -
params-Mapof user-defined parameters; must not benull, use an emptyMapto specify no params
-
-
ScriptType.STORED-
lang- the language will be specified when storing the script, so this should benull -
idOrCode- specifies the id of the stored script to be looked up, must not benull -
options- compiler options will be specified when a stored script is stored, so they have no meaning here and must benull -
params-Mapof user-defined parameters; must not benull, use an emptyMapto specify no params
-
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.elasticsearch.common.xcontent.ToXContent
ToXContent.DelegatingMapParams, ToXContent.MapParams, ToXContent.ParamsNested classes/interfaces inherited from interface org.elasticsearch.common.io.stream.Writeable
Writeable.Reader<V>, Writeable.Writer<V> -
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCONTENT_TYPE_OPTIONCompiler option forXContentTypeused for templates.static java.lang.StringDEFAULT_SCRIPT_LANGThe name of the of the default scripting language.static ScriptTypeDEFAULT_SCRIPT_TYPEThe defaultScriptType.static java.lang.StringDEFAULT_TEMPLATE_LANGThe name of the default template language.static ParseFieldLANG_PARSE_FIELDStandardParseFieldfor lang on the inner level.static ParseFieldOPTIONS_PARSE_FIELDStandardParseFieldfor options on the inner level.static ParseFieldPARAMS_PARSE_FIELDStandardParseFieldfor params on the inner level.static ParseFieldSCRIPT_PARSE_FIELDStandardParseFieldfor outer level of script queries.static ParseFieldSOURCE_PARSE_FIELDStandardParseFieldfor source on the inner level. -
Constructor Summary
Constructors Constructor Description Script(java.lang.String idOrCode)Constructor for simple script using the default language and default type.Script(StreamInput in)Creates aScriptread from an input stream.Script(ScriptType type, java.lang.String lang, java.lang.String idOrCode, java.util.Map<java.lang.String,java.lang.Object> params)Constructor for a script that does not need to use compiler options.Script(ScriptType type, java.lang.String lang, java.lang.String idOrCode, java.util.Map<java.lang.String,java.lang.String> options, java.util.Map<java.lang.String,java.lang.Object> params)Constructor for a script that requires the use of compiler options. -
Method Summary
Modifier and Type Method Description static <T> voiddeclareScript(AbstractObjectParser<T,?> parser, java.util.function.BiConsumer<T,Script> consumer)Declare a script field on anObjectParserwith the standard name (script).static <T> voiddeclareScript(AbstractObjectParser<T,?> parser, java.util.function.BiConsumer<T,Script> consumer, ParseField parseField)Declare a script field on anObjectParser.booleanequals(java.lang.Object o)java.lang.StringgetIdOrCode()java.lang.StringgetLang()java.util.Map<java.lang.String,java.lang.String>getOptions()java.util.Map<java.lang.String,java.lang.Object>getParams()ScriptTypegetType()inthashCode()static Scriptparse(Settings settings)Parse the script configured in the given settings.static Scriptparse(XContentParser parser)Convenience method to callparse(XContentParser, String)using the default scripting language.static Scriptparse(XContentParser parser, java.lang.String defaultLang)This will parse XContent into aScript.java.lang.StringtoString()XContentBuildertoXContent(XContentBuilder builder, ToXContent.Params builderParams)This will build scripts into the following XContent structure:{ "<(id, source)>" : "<idOrCode>", "lang" : "<lang>", "options" : { "option0" : "<option0>", "option1" : "<option1>", ... }, "params" : { "param0" : "<param0>", "param1" : "<param1>", ... } }Example:{ "source" : "return Math.log(doc.popularity) * params.multiplier;", "lang" : "painless", "params" : { "multiplier" : 100.0 } }Note that lang, options, and params will only be included if there have been any specified.voidwriteTo(StreamOutput out)Write this into the StreamOutput.
-
Field Details
-
DEFAULT_SCRIPT_LANG
public static final java.lang.String DEFAULT_SCRIPT_LANGThe name of the of the default scripting language.- See Also:
- Constant Field Values
-
DEFAULT_TEMPLATE_LANG
public static final java.lang.String DEFAULT_TEMPLATE_LANGThe name of the default template language.- See Also:
- Constant Field Values
-
DEFAULT_SCRIPT_TYPE
The defaultScriptType. -
CONTENT_TYPE_OPTION
public static final java.lang.String CONTENT_TYPE_OPTIONCompiler option forXContentTypeused for templates.- See Also:
- Constant Field Values
-
SCRIPT_PARSE_FIELD
StandardParseFieldfor outer level of script queries. -
SOURCE_PARSE_FIELD
StandardParseFieldfor source on the inner level. -
LANG_PARSE_FIELD
StandardParseFieldfor lang on the inner level. -
OPTIONS_PARSE_FIELD
StandardParseFieldfor options on the inner level. -
PARAMS_PARSE_FIELD
StandardParseFieldfor params on the inner level.
-
-
Constructor Details
-
Script
public Script(java.lang.String idOrCode)Constructor for simple script using the default language and default type.- Parameters:
idOrCode- The id or code to use dependent on the default script type.
-
Script
public Script(ScriptType type, java.lang.String lang, java.lang.String idOrCode, java.util.Map<java.lang.String,java.lang.Object> params)Constructor for a script that does not need to use compiler options.- Parameters:
type- TheScriptType.lang- The language for thisScriptif theScriptTypeisScriptType.INLINE. ForScriptType.STOREDscripts this should be null, but can be specified to access scripts stored as part of the stored scripts deprecated API.idOrCode- The id for thisScriptif theScriptTypeisScriptType.STORED. The code for thisScriptif theScriptTypeisScriptType.INLINE.params- The user-defined params to be bound for script execution.
-
Script
public Script(ScriptType type, java.lang.String lang, java.lang.String idOrCode, java.util.Map<java.lang.String,java.lang.String> options, java.util.Map<java.lang.String,java.lang.Object> params)Constructor for a script that requires the use of compiler options.- Parameters:
type- TheScriptType.lang- The language for thisScriptif theScriptTypeisScriptType.INLINE. ForScriptType.STOREDscripts this should be null, but can be specified to access scripts stored as part of the stored scripts deprecated API.idOrCode- The id for thisScriptif theScriptTypeisScriptType.STORED. The code for thisScriptif theScriptTypeisScriptType.INLINE.options- The map of compiler options for thisScriptif theScriptTypeisScriptType.INLINE,nullotherwise.params- The user-defined params to be bound for script execution.
-
Script
Creates aScriptread from an input stream.- Throws:
java.io.IOException
-
-
Method Details
-
declareScript
public static <T> void declareScript(AbstractObjectParser<T,?> parser, java.util.function.BiConsumer<T,Script> consumer)Declare a script field on anObjectParserwith the standard name (script).- Type Parameters:
T- Whatever type the ObjectParser is parsing.- Parameters:
parser- the parser itselfconsumer- the consumer for the script
-
declareScript
public static <T> void declareScript(AbstractObjectParser<T,?> parser, java.util.function.BiConsumer<T,Script> consumer, ParseField parseField)Declare a script field on anObjectParser.- Type Parameters:
T- Whatever type the ObjectParser is parsing.- Parameters:
parser- the parser itselfconsumer- the consumer for the scriptparseField- the field name
-
parse
Convenience method to callparse(XContentParser, String)using the default scripting language.- Throws:
java.io.IOException
-
parse
Parse the script configured in the given settings. -
parse
public static Script parse(XContentParser parser, java.lang.String defaultLang) throws java.io.IOExceptionThis will parse XContent into aScript. The following formats can be parsed: The simple format defaults to anScriptType.INLINEwith no compiler options or user-defined params: Example:"return Math.log(doc.popularity) * 100;"The complex format whereScriptTypeand idOrCode are required while lang, options and params are not required.{ // Exactly one of "id" or "source" must be specified "id" : "<id>", // OR "source": "<source>", "lang" : "<lang>", "options" : { "option0" : "<option0>", "option1" : "<option1>", ... }, "params" : { "param0" : "<param0>", "param1" : "<param1>", ... } }Example:{ "source" : "return Math.log(doc.popularity) * params.multiplier", "lang" : "painless", "params" : { "multiplier" : 100.0 } }This also handles templates in a special way. If a complexly formatted query is specified as another complex JSON object the query is assumed to be a template, and the format will be preserved.{ "source" : { "query" : ... }, "lang" : "<lang>", "options" : { "option0" : "<option0>", "option1" : "<option1>", ... }, "params" : { "param0" : "<param0>", "param1" : "<param1>", ... } }- Parameters:
parser- TheXContentParserto be used.defaultLang- The default language to use if no language is specified. The default language isn't necessarily the one defined byDEFAULT_SCRIPT_LANGdue to backwards compatibility requirements related to stored queries using previously default languages.- Returns:
- The parsed
Script. - Throws:
java.io.IOException
-
writeTo
Description copied from interface:WriteableWrite this into the StreamOutput. -
toXContent
public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params builderParams) throws java.io.IOExceptionThis will build scripts into the following XContent structure:{ "<(id, source)>" : "<idOrCode>", "lang" : "<lang>", "options" : { "option0" : "<option0>", "option1" : "<option1>", ... }, "params" : { "param0" : "<param0>", "param1" : "<param1>", ... } }Example:{ "source" : "return Math.log(doc.popularity) * params.multiplier;", "lang" : "painless", "params" : { "multiplier" : 100.0 } }Note that lang, options, and params will only be included if there have been any specified. This also handles templates in a special way. If theCONTENT_TYPE_OPTIONoption is provided and theScriptType.INLINEis specified then the template will be preserved as a raw field.{ "source" : { "query" : ... }, "lang" : "<lang>", "options" : { "option0" : "<option0>", "option1" : "<option1>", ... }, "params" : { "param0" : "<param0>", "param1" : "<param1>", ... } }- Specified by:
toXContentin interfaceToXContent- Throws:
java.io.IOException
-
getType
- Returns:
- The
ScriptTypefor thisScript.
-
getLang
public java.lang.String getLang()- Returns:
- The language for this
Scriptif theScriptTypeisScriptType.INLINE. ForScriptType.STOREDscripts this should be null, but can be specified to access scripts stored as part of the stored scripts deprecated API.
-
getIdOrCode
public java.lang.String getIdOrCode()- Returns:
- The id for this
Scriptif theScriptTypeisScriptType.STORED. The code for thisScriptif theScriptTypeisScriptType.INLINE.
-
getOptions
public java.util.Map<java.lang.String,java.lang.String> getOptions()- Returns:
- The map of compiler options for this
Scriptif theScriptTypeisScriptType.INLINE,nullotherwise.
-
getParams
public java.util.Map<java.lang.String,java.lang.Object> getParams()- Returns:
- The map of user-defined params for this
Script.
-
equals
public boolean equals(java.lang.Object o)- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-