# PUT vs POST when adding documents in elastic search

**URL:** <https://discuss.elastic.co/t/put-vs-post-when-adding-documents-in-elastic-search/187486>\
**Category:** Elasticsearch\
**Created:** [June 26, 2019, 6:41am UTC](https://discuss.elastic.co/t/put-vs-post-when-adding-documents-in-elastic-search/187486 "2019-06-26T06:41:49Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Vishwajeet\_singh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vishwajeet_singh/32/48795_2.png) [@Vishwajeet\_singh](https://discuss.elastic.co/u/Vishwajeet_singh)\
**Post date:** [June 26, 2019, 6:41am UTC](https://discuss.elastic.co/t/put-vs-post-when-adding-documents-in-elastic-search/187486/1 "2019-06-26T06:41:50Z")

</div>

Hi,

I am new to Elasticsearch and trying to add documents in elastic index. I have got confused between PUT and POST here as both are producing same results in below scenario:

curl -H "Content-Type: application/json" -XPUT "localhost:9200/products/mobiles/1?pretty" -d"  
{  
"name": "iPhone 7",  
"camera": "12MP",  
"storage": "256GB",  
"display": "4.7inch",  
"battery": "1,960mAh",  
"reviews": ["Incredibly happy after having used it for one week", "Best iPhone so far", "Very expensive, stick to Android"]  
}  
"

vs

curl -H "Content-Type: application/json" -XPOST "localhost:9200/products/mobiles/1?pretty" -d"  
{  
"name": "iPhone 7",  
"camera": "12MP",  
"storage": "256GB",  
"display": "4.7inch",  
"battery": "1,960mAh",  
"reviews": ["Incredibly happy after having used it for one week", "Best iPhone so far", "Very expensive, stick to Android"]  
}  
"

---

<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 26, 2019, 8:33am UTC](https://discuss.elastic.co/t/put-vs-post-when-adding-documents-in-elastic-search/187486/2 "2019-06-26T08:33:15Z")

</div>

Welcome.

You do `PUT` when you want to set the `_id`:

```auto
PUT index/_doc/1
{ ... }

```

You do `POST` when you don't want to set the `_id` and let elasticsearch generate it:

```auto
POST index/_doc
{ ... }

```

---

<div class="post-metadata">

**Author:** ![Vishwajeet\_singh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vishwajeet_singh/32/48795_2.png) [@Vishwajeet\_singh](https://discuss.elastic.co/u/Vishwajeet_singh)\
**Post date:** [June 26, 2019, 8:35am UTC](https://discuss.elastic.co/t/put-vs-post-when-adding-documents-in-elastic-search/187486/3 "2019-06-26T08:35:16Z")

</div>

Thank You David!!  
But I have checked that POST is also allowed with explicit id, why this is not restricted 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 26, 2019, 8:51am UTC](https://discuss.elastic.co/t/put-vs-post-when-adding-documents-in-elastic-search/187486/4 "2019-06-26T08:51:44Z")

</div>

I don't know.

---

<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 24, 2019, 8:51am UTC](https://discuss.elastic.co/t/put-vs-post-when-adding-documents-in-elastic-search/187486/5 "2019-07-24T08:51:45Z")

</div>

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