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, October 8, 2014 12:48:50 PM UTC+5:30, Rajit Garg wrote:
>
> *I have read the nested docs and create mapping and get mapping as follow*
>
> "fields": {
>             "type": "nested",
>             "properties": {
>               "_id": {
>                 "type": "string"
>               },
>               "name": {
>                 "type": "string"
>               }
>             }
>           }
>
>
> *where fields is my array contain the following*
>
> "fields": [
>             {
>               "_id": "1",
>               "name": "naveen"
>             },
>             {
>               "_id": "2",
>               "name": "rajit"
>             },
>             {
>               "_id": "3",
>               "name": "ashu"
>             }
>           ]
>
>
> *I want to update and remove object from this array, and I am doing this,*
>
> client.update({"index": "daffosw","type": "daffo","id": "2501","body": {
>     "script" : "for (int i = 0; i < ctx._source.fields.size(); i++){
> if(ctx._source.fields[i]_id == id){
> ctx._source.fields[i].name = 'Updated John';
> }
> }",
>     "params" : {
>           "id" : "1"
>     }
> }}
>
> *and I am getting this error*
>
> VerifyError[Bad type on operand stack
> Exception Details:
>   Location:
>     
> ASMAccessorImpl_18539991071412750271920.getValue(Ljava/lang/Object;Ljava/lang/Object;Lorg/elasticsearch/common/mvel2/integration/VariableResolverFactory;)Ljava/lang/Object;
>  
> @49: invokeinterface
>   Reason:
>     Type 'java/lang/Object' (current frame, stack[1]) is not assignable to 
> integer
>   Current Frame:
>     bci: @49
>     flags: { }
>     locals: { 'ASMAccessorImpl_18539991071412750271920', 
> 'java/lang/Object', 'java/lang/Object', 
> 'org/elasticsearch/common/mvel2/integration/VariableResolverFactory' }
>     stack: { 'java/util/List', 'java/lang/Object' }............
> .............................................................
> .........................................................
>
>
>
> *then I have tried this*
>
> client.update({"index": "daffosw","type": "daffo","id": "2501","body": {
>     "script" : "for (int i = 0; i < ctx._source.fields.size(); i++){
> if(ctx._source.fields[i]_id == id){
> ctx._source.fields.remove(i);
> }
> }",
>     "params" : {
>           "id" : "1"
>     }
> }}
>
>
> *and this is giving the same type of error*
>
>
> *then I have tried*
>
>
> client.update({"index": "daffosw","type": "daffo","id": "2501","body": {
>     "script" : "for (element : doc['fields'].values){
> if(element._id == id){
> element.name = 'Updated John';
> }
> }",
>     "params" : {
>           "id" : "1"
>     }
> }}
>
>
> *which gives this error*
>
> *elasticsearchIllegalArgumentException[failed to execute script]; nested: 
> PropertyAccessException[[Error: unresolvable property or identifier: doc]*
>
>
> please help....
>

-- 
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/6c3b31f6-2611-4e32-9a8d-a03b01854685%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to