my groovy script is something like this code:
def value=DynamicValue
def Nvalue=NewValue
def field=Fieldvalue
def prod
NewValue=NewValue.toInteger()
prod=doc[''+DynamicValue+''].value*NewValue
if(._source.doc[''+Fieldvalue+''].value != null) {
._source.doc[''+Fieldvalue+''].value=prod
}
I am trying to update the value of a field in my elasticsearch index like
._source.doc[''+Fieldvalue+''].value=prod
where AVG_PRICE_PER_UNIT is a field in my index.
But when i am exceuting it from java i get
"reason" : {
"type" : "script_exception",
"reason" : "failed to run file script [fieldScript] using lang [groovy]",
"caused_by" : {
"type" : "illegal_argument_exception",
"reason" : "argument type mismatch"
}
is there any solution??
My Java code:
Map<String, Object> params = ImmutableMap.of("DynamicValue",AggregateValue_First, "NewValue", AggregateValue_Second, "Fieldvalue",hash);
try {
SearchResponse Se = client.prepareSearch(indexName)
.addScriptField("checkValue", new Script("fieldScript", ScriptType.FILE, "groovy", params))
.execute().actionGet();
System.out.println(Se.toString());
} catch(RuntimeException e) {
e.printStackTrace();
}
my log shows
if (._source.doc[''+Fieldvalue+''] != null) {_source.doc[''+Fieldvalue+''].value=prod} ^
1 error ]; at org.elasticsearch.script.groovy.GroovyScriptEngineService.compile(GroovyScriptEngineService.java:198) at org.elasticsearch.script.ScriptService$ScriptChangesListener.onFileInit(ScriptService.java:549) at org.elasticsearch.script.ScriptService$ScriptChangesListener.onFileChanged(ScriptService.java:580) at org.elasticsearch.watcher.FileWatcher$FileObserver.onFileChanged(FileWatcher.java:279) at org.elasticsearch.watcher.FileWatcher$FileObserver.checkAndNotify(FileWatcher.java:131) at org.elasticsearch.watcher.FileWatcher$FileObserver.updateChildren(FileWatcher.java:215) at org.elasticsearch.watcher.FileWatcher$FileObserver.checkAndNotify(FileWatcher.java:117) at org.elasticsearch.watcher.FileWatcher.doCheckAndNotify(FileWatcher.java:70) at org.elasticsearch.watcher.AbstractResourceWatcher.checkAndNotify(AbstractResourceWatcher.java:44) at org.elasticsearch.watcher.ResourceWatcherService$ResourceMonitor.run(ResourceWatcherService.java:187) at org.elasticsearch.threadpool.ThreadPool$LoggingRunnable.run(ThreadPool.java:640) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.runAndReset(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 895843a31627edca5a53c198e26b4f4b13aa65c5: 26: unexpected token: . @ line 26, column 7.