Class Script

  • All Implemented Interfaces:
    Writeable, ToXContent, ToXContentObject

    public final class Script
    extends 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 String DEFAULT_SCRIPT_LANG
        The name of the of the default scripting language.
        See Also:
        Constant Field Values
      • DEFAULT_TEMPLATE_LANG

        public static final 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.
    • Method Detail

      • parse

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

        public static Script parse​(XContentParser parser,
                                   String defaultLang)
                            throws 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:
        IOException
      • toXContent

        public XContentBuilder toXContent​(XContentBuilder builder,
                                          ToXContent.Params builderParams)
                                   throws 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:
        IOException
      • getParams

        public Map<String,​Object> getParams()
        Returns:
        The map of user-defined params for this Script.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object