Thanks David

On Sunday, August 31, 2014 7:48:38 PM UTC+1, David Pilato wrote:
>
> You can't do it with elasticsearch but you could try this plugin: 
> https://github.com/yakaz/elasticsearch-action-updatebyquery
>
> HTH
>
> --
> David ;-)
> Twitter : @dadoonet / @elasticsearchfr / @scrutmydocs
>
>
> Le 31 août 2014 à 20:22, [email protected] <javascript:> a écrit :
>
> Hey 
>
> I figured it out, but it leads me on to another question.
>
> So the way to execute a script over a list of elements is as follows:
>
> 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"
>   }
> }
>
> My next question: how can I query the index to find all matching documents 
> with say "tweet_id": "123" and then execute the script on only those 
> documents?
>
> When I tried 
> .. query..
> {
>    "filter": {
>      "script": "foreach (item : ctx._source.list) {if (item['tweet_id'] == 
> tweet_id) { item['new_field'] = 'ghi'; }  }",
>   "params": {
>     "tweet_id": "123"
>   }
> }
> }
> I got an error saying property : ctx : unresolvable
>
> Thanks.
>
> On Friday, August 29, 2014 10:33:23 AM UTC+1, [email protected] wrote:
>>
>> Hi
>> Say I have a list of elements like this:
>>
>> PUT twitter/twit/1
>> {
>>    "list": [
>>            {
>>               "a": "b",
>>               "c": "d",
>> *              "e": "f"*
>>             },
>>             {
>>               "1": "2",
>>               "3": "4"
>>             }
>>         ]
>> }
>>
>> And I want to change the value of "e" (currently "f") to say "new_f " 
>> such that the document looks like: 
>>
>> {
>>    "list": [
>>            {
>>               "a": "b",
>>               "c": "d",
>> *              "e": "new_f"*
>>             },
>>             {
>>               "1": "2",
>>               "3": "4"
>>             }
>>         ]
>> }
>>
>> Is there a way to do this ? Maybe in MVEL ?
>>
>> Do I match on document 
>>            {
>>               "a": "b",
>>               "c": "d",
>>               "e": "f"
>>             }
>>
>> ie if list.contains(document) { some kind of update; }  // is this 
>> possible ?
>>
>>
>> I know MVEL is being deprecated in 1.4 however it will do for now. 
>>
>> I want to use bulk request. 
>>
>> I know it's possible to remove the element like this: 
>> bulkRequestBuilder.setScript("if (ctx._source.list.contains(document)) 
>> {ctx._source.list.remove(document)} }").setScriptParams etc
>>
>>
>> but is it possible to "update" a field in the document also ?
>>
>> 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] <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elasticsearch/5c641a4e-a02f-4ebe-972f-cd2a320d15d4%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/elasticsearch/5c641a4e-a02f-4ebe-972f-cd2a320d15d4%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/03702904-fd4a-4fed-8bb7-4204dccebfd8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to