Class 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 to DEFAULT_SCRIPT_LANG
      • idOrCode - specifies the code to be compiled, must not be null
      • options - specifies the compiler options for this script; must not be null, use an empty Map to specify no options
      • params - Map of user-defined parameters; must not be null, use an empty Map to specify no params
    • ScriptType.STORED
      • lang - the language will be specified when storing the script, so this should be null
      • idOrCode - specifies the id of the stored script to be looked up, must not be null
      • options - compiler options will be specified when a stored script is stored, so they have no meaning here and must be null
      • params - Map of user-defined parameters; must not be null, use an empty Map to specify no params
    • Field Detail

      • DEFAULT_SCRIPT_LANG

        public static final java.lang.String DEFAULT_SCRIPT_LANG
        The name of the of the default scripting language.
        See Also:
        Constant Field Values
      • DEFAULT_TEMPLATE_LANG

        public static final java.lang.String DEFAULT_TEMPLATE_LANG
        The name of the default template language.
        See Also:
        Constant Field Values
      • SCRIPT_PARSE_FIELD

        public static final ParseField SCRIPT_PARSE_FIELD
        Standard ParseField for outer level of script queries.
      • SOURCE_PARSE_FIELD

        public static final ParseField SOURCE_PARSE_FIELD
        Standard ParseField for source on the inner level.
      • LANG_PARSE_FIELD

        public static final ParseField LANG_PARSE_FIELD
        Standard ParseField for lang on the inner level.
      • OPTIONS_PARSE_FIELD

        public static final ParseField OPTIONS_PARSE_FIELD
        Standard ParseField for options on the inner level.
      • PARAMS_PARSE_FIELD

        public static final ParseField PARAMS_PARSE_FIELD
        Standard ParseField for params on the inner level.
    • Constructor Detail

      • 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 - The ScriptType.
        lang - The language for this Script if the ScriptType is ScriptType.INLINE. For ScriptType.STORED scripts this should be null, but can be specified to access scripts stored as part of the stored scripts deprecated API.
        idOrCode - The id for this Script if the ScriptType is ScriptType.STORED. The code for this Script if the ScriptType is ScriptType.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 - The ScriptType.
        lang - The language for this Script if the ScriptType is ScriptType.INLINE. For ScriptType.STORED scripts this should be null, but can be specified to access scripts stored as part of the stored scripts deprecated API.
        idOrCode - The id for this Script if the ScriptType is ScriptType.STORED. The code for this Script if the ScriptType is ScriptType.INLINE.
        options - The map of compiler options for this Script if the ScriptType is ScriptType.INLINE, null otherwise.
        params - The user-defined params to be bound for script execution.
      • Script

        public Script​(StreamInput in)
               throws java.io.IOException
        Creates a Script read from an input stream.
        Throws:
        java.io.IOException
    • Method Detail

      • parse

        public static Script parse​(Settings settings)
        Parse the script configured in the given settings.
      • parse

        public static Script parse​(XContentParser parser,
                                   java.lang.String defaultLang)
                            throws java.io.IOException
        This will parse XContent into a Script. The following formats can be parsed: The simple format defaults to an ScriptType.INLINE with no compiler options or user-defined params: Example: "return Math.log(doc.popularity) * 100;" The complex format where ScriptType and 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 - The XContentParser to be used.
        defaultLang - The default language to use if no language is specified. The default language isn't necessarily the one defined by DEFAULT_SCRIPT_LANG due to backwards compatibility requirements related to stored queries using previously default languages.
        Returns:
        The parsed Script.
        Throws:
        java.io.IOException
      • toXContent

        public XContentBuilder toXContent​(XContentBuilder builder,
                                          ToXContent.Params builderParams)
                                   throws java.io.IOException
        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. This also handles templates in a special way. If the CONTENT_TYPE_OPTION option is provided and the ScriptType.INLINE is 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:
        toXContent in interface ToXContent
        Throws:
        java.io.IOException
      • getLang

        public java.lang.String getLang()
        Returns:
        The language for this Script if the ScriptType is ScriptType.INLINE. For ScriptType.STORED scripts this should be null, but can be specified to access scripts stored as part of the stored scripts deprecated API.
      • getOptions

        public java.util.Map<java.lang.String,​java.lang.String> getOptions()
        Returns:
        The map of compiler options for this Script if the ScriptType is ScriptType.INLINE, null otherwise.
      • 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:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object