You can't do it with elasticsearch but you could try this plugin: GitHub - yakaz/elasticsearch-action-updatebyquery: ElasticSearch Update By Query action plugin
HTH
--
David
Twitter : @dadoonet / @elasticsearchfr / @scrutmydocs
Le 31 août 2014 à 20:22, eunever32@gmail.com 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, eune...@gmail.com 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 elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/5c641a4e-a02f-4ebe-972f-cd2a320d15d4%40googlegroups.com.
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 elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/234C2E37-8860-4015-84A3-6326C27DA17F%40pilato.fr.
For more options, visit https://groups.google.com/d/optout.