*Does not work (using JAVA API):*

String script = "ctx._source.objectsList += newObject";
> UpdateRequestBuilder prepareUpdate = client.prepareUpdate("indexName",
> "typeName", "id");
> prepareUpdate.setScriptLang("groovy");
> prepareUpdate.setScript(script, ScriptType.INLINE);
> prepareUpdate.addScriptParam("newObject", "{\"status\":\"aasdsd\"}");
> prepareUpdate.get();



 Is there a way to reproduce the working REST API behavior with the Java
API?

2014-12-16 15:17 GMT-02:00 Roger de Cordova Farias <
roger.far...@fontec.inf.br>:
>
> Ok, I found out that I can send a JSON as a script parameter and just
> append it to the nested objects list (with list += newObject or
> list.add(newObject) ) using groovy and it works
>
> But it is not working with the Java API, I can only get it to work using
> the REST API.
>
> When using Java the JSON is treated as a string, then I get the error:
>
> object mapping [objectsList] trying to serialize a value with no field
>> associated with it, current value [{"field":"value"}]
>
>
> I can reproduce the error in the REST API by wrapping the JSON parameter
> with quotes:
>
> *Works (using REST API):*
>
> {
>>   "script": "ctx._source.objectsList += newObject",
>>   "params": {
>>     "newObject": {"field": "value"}
>>   },
>>   "lang": "groovy"
>> }
>
>
> *Does not work (using REST API):*
>
> {
>>   "script": "ctx._source.objectsList += newObject",
>>   "params": {
>>     "newObject": "{\"field\": \"value\"}"
>>   },
>>   "lang": "groovy"
>> }
>
>
> *Does not work (using JAVA API):*
>
> String script = "ctx._source.objectsList += newObject";
>
>
>
>
> 2014-12-16 13:04 GMT-02:00 Roger de Cordova Farias <
> roger.far...@fontec.inf.br>:
>
>> Hello
>>
>> I'm trying to update a document whose root object contains a list of
>> nested objects. I need to send an object of the nested type as a script
>> parameter to append to the list
>>
>> How can I append the json (a string type) to the nested objects list of
>> the root object using Groovy? or should I use another script lang?
>>
>> I tried using JsonSlurper <http://groovy-lang.org/json.html> in Groovy,
>> that converts between json and Groovy objects, but I always get:
>>
>> Caused by:
>>> org.elasticsearch.script.groovy.GroovyScriptCompilationException:
>>> MultipleCompilationErrorsException[startup failed:
>>> Script3.groovy: 2: unable to resolve class JsonSlurper
>>>  @ line 2, column 19.
>>>    def jsonSlurper = new JsonSlurper();
>>>                      ^
>>> 1 error
>>> ]
>>> at
>>> org.elasticsearch.script.groovy.GroovyScriptEngineService.compile(GroovyScriptEngineService.java:117)
>>> at
>>> org.elasticsearch.script.ScriptService.getCompiledScript(ScriptService.java:368)
>>> at org.elasticsearch.script.ScriptService.compile(ScriptService.java:354)
>>> at
>>> org.elasticsearch.script.ScriptService.executable(ScriptService.java:497)
>>> at
>>> org.elasticsearch.action.update.UpdateHelper.prepare(UpdateHelper.java:149)
>>> ... 8 more
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/CAJp2530t5o9jcpgGRsJo1zV%2BaSvD7Uk8QyTKha6VR-RoHQuqsQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to