# Update value in elastic

**URL:** <https://discuss.elastic.co/t/update-value-in-elastic/186710>\
**Category:** Elasticsearch\
**Created:** [June 20, 2019, 2:27pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710 "2019-06-20T14:27:29Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [June 20, 2019, 2:27pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/1 "2019-06-20T14:27:30Z")

</div>

I want to write a query and update a field, my index already has all of listed field  
para, mytime, yourtime, someonestime

by this logic

if [para="T'] {  
mytime=yourtime  
}  
else  
{  
mytime=someonestime  
}

is this possible in elastic ?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 20, 2019, 2:49pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/2 "2019-06-20T14:49:05Z")

</div>

Update by query with a painless script will probably be the thing you want.

---

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [June 20, 2019, 2:51pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/3 "2019-06-20T14:51:26Z")

</div>

@dadoonet  
any example. I was just reading it but so confuse to get my head around it

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 20, 2019, 3:04pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/4 "2019-06-20T15:04:44Z")

</div>

There is one example here: [https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html)

---

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [June 20, 2019, 3:05pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/5 "2019-06-20T15:05:01Z")

</div>

Is this looks right?  
if yes how do I execute this. getting more confuse. 🙃

if (doc['para'].value = "T") {  
doc['mytime'].value = doc['yourtime'].value;  
}  
else {  
doc['mytime'].value = doc['someonestime'].value;  
}

---

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [June 20, 2019, 3:58pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/6 "2019-06-20T15:58:33Z")

</div>

I try this but didn't work

```
POST resources-2019/_update_by_query
{
  "script":{
    "lang": "painless",
    "inline": "if (ctx._source.para = 'T') {
      ctx._source.mytime = ctx._source.yourtime }"
  }
}

```

Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@4b5fac4; line: 4, column: 46]"

try T without quote, double quote same error

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 20, 2019, 5:06pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/7 "2019-06-20T17:06:21Z")

</div>

I think that may be this should be fixed:

```
if (ctx._source.para = 'T')

```

With

```
if (ctx._source.para == \"T\")

```

I'm not a Painless user so that's just a guess.

---

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [June 20, 2019, 6:09pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/8 "2019-06-20T18:09:15Z")

</div>

doing it testing as listed somewhere on site  
created a record  
{  
"\_index" : "stocks",  
"\_type" : "mystocks",  
"\_id" : "1",  
"\_score" : 1.0,  
"\_source" : {  
"company" : "Apple",  
"symbol" : "aapl",  
"shares" : 100,  
"price" : 150,  
"purchase\_date" : "2017/07/25",  
"risk" : "moderate"  
}

```
POST /stocks/mystocks/_update_by_query?pretty
{
  "script": {
    "lang":"painless",
   "inline": "if (ctx._source.symbol = \"aapl\") { ctx._source.risk =\"LOW\" } else {ctx.op='noop'}"
  }
}

```

Give me following error  
{  
"error": {  
"root\_cause": [  
{  
"type": "script\_exception",  
"reason": "compile error",  
"script\_stack": [  
"if (ctx.\_source.symbol = "aap ...",  
" ^---- HERE"  
],  
"script": "if (ctx.\_source.symbol = "aapl") { ctx.\_source.risk ="LOW" } else {ctx.op='noop'}",  
"lang": "painless"  
}  
],  
"type": "script\_exception",  
"reason": "compile error",  
"script\_stack": [  
"if (ctx.\_source.symbol = "aap ...",  
" ^---- HERE"  
],  
"script": "if (ctx.\_source.symbol = "aapl") { ctx.\_source.risk ="LOW" } else {ctx.op='noop'}",  
"lang": "painless",  
"caused\_by": {  
"type": "class\_cast\_exception",  
"reason": "Cannot cast from [java.lang.String] to [boolean]."  
}  
},  
"status": 400  
}

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [June 20, 2019, 6:45pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/9 "2019-06-20T18:45:03Z")

</div>

Try with `==` as I mentioned before.

---

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [June 20, 2019, 6:49pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/10 "2019-06-20T18:49:57Z")

</div>

Perefect this syntax worked  
POST /stocks/mystocks/\_update\_by\_query?pretty  
{  
"script": {  
"lang":"painless",  
"inline": "if (ctx.\_source.symbol == "aapl") { ctx.\_source.risk = "Low" } else {ctx.op='noop'}"  
}  
}

---

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [June 20, 2019, 6:53pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/11 "2019-06-20T18:53:55Z")

</div>

infact all other combination works

```
    POST /stocks/mystocks/_update_by_query?pretty
{
  "script": {
    "lang":"painless",
   "inline": "if (ctx._source.symbol == \"aapl\") { ctx._source.shares = ctx._source.price } else {ctx.op='noop'}"
  }
}

```

and this as well

```
POST /stocks/mystocks/_update_by_query?pretty
{
  "script": {
    "lang":"painless",
   "inline": "if (ctx._source.shares == 150) { ctx._source.price = ctx._source.shares } else {ctx.op='noop'}"
  }
}
```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 18, 2019, 6:53pm UTC](https://discuss.elastic.co/t/update-value-in-elastic/186710/12 "2019-07-18T18:53:55Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
