# How to do conditional update and insert in ElasticSearch 6.1?

**URL:** https://discuss.elastic.co/t/how-to-do-conditional-update-and-insert-in-elasticsearch-6-1/138108
**Category:** Elasticsearch
**Created:** [July 2, 2018, 12:43am UTC](https://discuss.elastic.co/t/how-to-do-conditional-update-and-insert-in-elasticsearch-6-1/138108 "2018-07-02T00:43:42Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![kant\_kodali](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kant_kodali/32/50637_2.png) [@kant\_kodali](https://discuss.elastic.co/u/kant_kodali)
#### Post date: [July 2, 2018, 12:43am UTC](https://discuss.elastic.co/t/how-to-do-conditional-update-and-insert-in-elasticsearch-6-1/138108/1 "2018-07-02T00:43:42Z")

</div>

I want to do conditional update if the document already exists and if not I want to just insert it. I tried something like below it does the conditional update if the doc already exists in ES but it fails to insert if there is no doc in ES

```
{
    "scripted_upsert":true,
    "script" : {
        "inline": "if(ctx._source.num > params._source.num) {ctx._source = params._source}",
        "lang": "painless",
        "params" : {
            "_source" : {
                "num": 7,
                "url":"foo.com/bar",
                "response":404,
                "time":"2014-01-01 12:32"
            }
        }
    },
    "upsert" : {}
}

```

Also I am trying not replicate the same doc in params as well as in the upsert element since my doc can have 100 fields.

---

<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 30, 2018, 12:43am UTC](https://discuss.elastic.co/t/how-to-do-conditional-update-and-insert-in-elasticsearch-6-1/138108/2 "2018-07-30T00:43:46Z")

</div>

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