[[query-dsl-script-filter]]
=== Script Filter

A filter allowing to define
<<modules-scripting,scripts>> as filters. For
example:

[source,js]
----------------------------------------------
"filtered" : {
    "query" : {
        ...
    }, 
    "filter" : {
        "script" : {
            "script" : "doc['num1'].value > 1"
        }
    }
}
----------------------------------------------

[float]
==== Custom Parameters

Scripts are compiled and cached for faster execution. If the same script
can be used, just with different parameters provider, it is preferable
to use the ability to pass parameters to the script itself, for example:

[source,js]
----------------------------------------------
"filtered" : {
    "query" : {
        ...
    }, 
    "filter" : {
        "script" : {
            "script" : "doc['num1'].value > param1"
            "params" : {
                "param1" : 5
            }
        }
    }
}
----------------------------------------------

[float]
==== Caching

The result of the filter is not cached by default. The `_cache` can be
set to `true` to cache the *result* of the filter. This is handy when
the same script and parameters are used on several (many) other queries.
Note, the process of caching the first execution is higher when caching
(since it needs to satisfy different queries).
