Thanks this is working On Tuesday, October 28, 2014 8:40:12 AM UTC+5:30, [email protected] wrote: > > > "script": "removeObjects = new java.util.ArrayList(); foreach (item : > ctx._source.list) {if (item['tweet_id'] == tweet_id) > {removeObjects.add(item) } } > for(removeObject:removeObjects){ctx._source.list.remove(removeObject);}", > > 2014년 10월 8일 수요일 오후 8시 12분 55초 UTC+9, Rajit Garg 님의 말: >> >> Hey >> >> *I figured it out, I am able to update but I am not able to remove object >> that satisfies the condition* >> >> PUT twitter/twit/1 >> { >> "list": [ >> { >> "tweet_id": "1", >> "a": "b" >> }, >> { >> "tweet_id": "123", >> "a": "f" >> } >> ] >> } >> >> POST /twitter/twit/1/_update >> { >> "script": "foreach (item : ctx._source.list) {if (item['tweet_id'] == >> tweet_id) { item['new_field'] = 'ghi'; } }", >> "params": { >> "tweet_id": "123" >> } >> } >> *this is working* >> >> *for remove i am doing this* >> >> POST /twitter/twit/1/_update >> { >> "script": "foreach (item : ctx._source.list) {if (item['tweet_id'] == >> tweet_id) {ctx._source.list.remove(item); } }", >> "params": { >> "tweet_id": "123" >> } >> } >> >> >> *but this is not working and giving this error, * >> >> ElasticsearchIllegalArgumentException[failed to execute script]; nested: >> ConcurrentModificationException; >> Error: ElasticsearchIllegalArgumentException[failed to execute script]; >> nested: ConcurrentModificationException; >> .................................. >> ............................... >> >> >> *please help........* >> >> >> >> >> On Wednesday, April 10, 2013 12:22:14 PM UTC+5:30, Andrei Tolnai wrote: >>> >>> Hello. >>> >>> I use *Elastic Search Java API *for basic *CRUD *operations on ES >>> documents; with *root type* documents it is working fine. >>> >>> However when I want to delete a nested document, I don't know how to use >>> the *Java API* and scripting that *Elastic Search *provides. >>> >>> I have the following *root type* document which has in it a nested *users >>> *property (nested document). >>> { >>> "customer": >>> { >>> "_all" : {"enabled" : false}, >>> "_source" : {"enabled" : true}, >>> "store" : "true", >>> "properties": >>> { >>> "location" : { "type": "string", "store": "yes", >>> "index":"not_analyzed" }, >>> "comments" : { "type": "string", "store": "yes", >>> "index":"not_analyzed" }, >>> * "users":* >>> * {* >>> * "type":"nested",* >>> * "store":"yes", * >>> * "properties":* >>> * {* >>> * "_id" : { "type":"string", "store":"yes", >>> "index":"not_analyzed" },* >>> * "name" : { "type":"string", "store":"yes", >>> "index":"not_analyzed" },* >>> * "birthDate" : { "type":"date", >>> "store":"yes", "index":"not_analyzed" }* >>> * }* >>> * }* >>> } >>> } >>> } >>> >>> If I want to add a user I do the following in *Java */ *Scala *code: >>> >>> val json = " >>> {\"_id\":\"1\",\"name\":\"Anthony\",\"birthDate\":\"2013-04-10T06:45:26.186Z\"}" >>> val updateRequest = new UpdateRequest("indexName", "customer", >>> customerId) >>> updateRequest.script(" if (ctx._source.users == null) { >>> ctx._source.users = "+json+" } else { ctx._source.users += "+json+" } ") >>> >>> This works OK for adding nested *users *AKA updating the *customer root >>> type* document. >>> >>> How is it to be done for *deleting* or *updating *a specific user ID >>> from the nested *users* nested document? >>> >>> >>> Thanks! >>> >>
-- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/a4ccc10c-a06e-4c47-b486-8fdd1da4bfa3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
