# Providing parameters to AbstractSearchScript?

**URL:** <https://discuss.elastic.co/t/providing-parameters-to-abstractsearchscript/10382>\
**Category:** Elasticsearch\
**Created:** [January 17, 2013, 4:49am UTC](https://discuss.elastic.co/t/providing-parameters-to-abstractsearchscript/10382 "2013-01-17T04:49:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cedric\_Hurst](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cedric_hurst/32/2535_2.png) [@Cedric\_Hurst](https://discuss.elastic.co/u/Cedric_Hurst)\
**Post date:** [January 17, 2013, 4:49am UTC](https://discuss.elastic.co/t/providing-parameters-to-abstractsearchscript/10382/1 "2013-01-17T04:49:04Z")

</div>

Quick question, I know that parameters are supported on in-line scripts as  
documented here:

[http://www.elasticsearch.org/guide/reference/query-dsl/script-filter.html](http://www.elasticsearch.org/guide/reference/query-dsl/script-filter.html)

But is there a similar way to pass parameters into a Java-native  
AbstractExecutableScript/AbstractSearchScript? For example:

public class CustomScript extends AbstractExecutableScript {

```
public CustomScript(@Nullable Map<String,Object> params){

}

@Override

public java.lang.Object run() {

  String param1 = // some code to grab a script/query parameter

}

```

}

--

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 18, 2013, 5:19pm UTC](https://discuss.elastic.co/t/providing-parameters-to-abstractsearchscript/10382/2 "2013-01-18T17:19:37Z")

</div>

The native script is created by a class that implements  
NativeScriptFactory. So, you can do something like this:

public class CustomScript extends AbstractExecutableScript {

```
public static class CustomScriptNativeScriptFactory implements 

```

NativeScriptFactory {

```
    @Override
    public ExecutableScript newScript(@Nullable Map<String, Object> 

```

params) {  
String param1 = params == null ? "default" :  
XContentMapValues.nodeStringValue(params.get("param1"), "default");  
return new CustomScript(param1);  
}  
}

```
private final param1;

public CustomScript(String param1){
    this.param1 = param1;
}

@Override
public java.lang.Object run() {
  // use this.myParam here
}

```

}

On Wednesday, January 16, 2013 11:49:04 PM UTC-5, Cedric Hurst wrote:

> Quick question, I know that parameters are supported on in-line scripts as  
> documented here:
> 
> [Elasticsearch Platform — Find real-time answers at scale | Elastic](http://www.elasticsearch.org/guide/reference/query-dsl/script-filter.html)
> 
> But is there a similar way to pass parameters into a Java-native  
> AbstractExecutableScript/AbstractSearchScript? For example:
> 
> public class CustomScript extends AbstractExecutableScript {
> 
> ```
> public CustomScript(@Nullable Map<String,Object> params){
> 
> }
> 
> @Override
> 
> public java.lang.Object run() {
> 
> String param1 = // some code to grab a script/query parameter
> 
> }
> 
> ```
> 
> }

--

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 2:55am UTC](https://discuss.elastic.co/t/providing-parameters-to-abstractsearchscript/10382/3 "2017-07-06T02:55:43Z")

</div>


