# Insert the json into elastic using java

**URL:** <https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674>\
**Category:** Elasticsearch\
**Created:** [July 19, 2018, 7:29am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674 "2018-07-19T07:29:03Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 19, 2018, 7:29am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/1 "2018-07-19T07:29:03Z")

</div>

hi i am having below json obect i need to push this data into elasticserach index i already creadted index in elastic ,can any one help me in this .

"data"  
{  
"counter":"0",  
"create\_ts":"12-12-2018",  
"email":"srinivas.thouti@gmail.com",  
"last\_updated\_ts":"16-12-2018",  
"source\_site":"CC",  
"url":"httpppppp"  
}

---

<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:** [July 19, 2018, 9:24pm UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/2 "2018-07-19T21:24:45Z")

</div>

See [https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-index.html](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-index.html)

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 20, 2018, 7:15am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/3 "2018-07-20T07:15:03Z")

</div>

which maven dependency i need to use and can you provide exact example for this.

---

<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:** [July 20, 2018, 7:35am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/4 "2018-07-20T07:35:56Z")

</div>

The Maven dependency is in the documentation I linked to.  
There are also examples.

If you can't make it work, share what you did so far and we can probably help.

I do have an example but might be much more complex than your original question though. Anyway, here we go:

> <https://github.com/dadoonet/legacy-search/blob/01-direct/src/main/java/fr/pilato/demo/legacysearch/dao/ElasticsearchDao.java#L54-L57>

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 20, 2018, 10:47am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/5 "2018-07-20T10:47:47Z")

</div>

thanks its working fine for me i used below code  
Email email=new Email();  
email.setCounter("0");  
email.setCreatets(java.time.LocalDate.now()+"");  
email.setEmail("srinivas.thouti@gmail.com");  
email.setLast\_updated\_ts(java.time.LocalDate.now()+"");  
email.setSource("Customer Centricity");  
email.setUrl(summary);

```
final ObjectMapper mapper = new ObjectMapper();
RestHighLevelClient esClient=new RestHighLevelClient(RestClient.builder(HttpHost.create("http://apsrp06825:9209")));
 byte[] bytes = mapper.writeValueAsBytes(email);
 esClient.index(new IndexRequest("email_subscription", "data", email.idAsString()).source(bytes, XContentType.JSON));

```

but my question is i need to return some automated genarated value of id how can i do this

---

<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:** [July 20, 2018, 5:21pm UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/6 "2018-07-20T17:21:06Z")

</div>

> [@srinivasthouti](#):
>
> i need to return some automated genarated value of id

what do you mean?

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 23, 2018, 7:16am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/7 "2018-07-23T07:16:21Z")

</div>

i mean while inserting record into elastic i am generating id value, now i need to get that incremented value as return while inserting.

one more query sir how can i get particular record from index.  
for example i have id like this 8gH1xWQBtT8Pa64GFEMX i need to get all details using java.

---

<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:** [July 23, 2018, 7:32am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/8 "2018-07-23T07:32:14Z")

</div>

There is nothing like an automatic sequence you can use in elasticsearch. But elasticsearch can always generate unique ids for you if you don't specify the Id.

```
POST index/_doc
{
   // whatever 
}

```

To get a document using java use [https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-get.html](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-get.html)

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 23, 2018, 9:44am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/9 "2018-07-23T09:44:22Z")

</div>

hi sir can i get the incremented id after inserting the record into 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:** [July 23, 2018, 11:04am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/10 "2018-07-23T11:04:32Z")

</div>

No. As I said there is nothing like this out of the box.  
You can simulate it though with something described in [https://www.elastic.co/guide/en/elasticsearch/guide/2.x/partial-updates.html#\_updates\_and\_conflicts](https://www.elastic.co/guide/en/elasticsearch/guide/2.x/partial-updates.html#_updates_and_conflicts). But you'd better do it within your application or using another mechanism (which I don't know).

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 24, 2018, 7:21am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/11 "2018-07-24T07:21:31Z")

</div>

is there any possible to update particular record using java in index.

---

<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:** [July 24, 2018, 7:37am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/12 "2018-07-24T07:37:20Z")

</div>

Yes. The document index API.

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 24, 2018, 7:48am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/13 "2018-07-24T07:48:35Z")

</div>

hi sir i am unable to find out exact example and i am prepared like this  
Email email=new Email();  
email.setCounter(Integer.parseInt(subData.getString("counter"))+1+"");  
email.setCreatets(subData.getString("createts"));  
email.setEmail(subData.getString("email"));  
email.setSource(subData.getString("source"));  
email.setLast\_updated\_ts(java.time.LocalDate.now()+" "+java.time.LocalTime.now());  
email.setUrl(subData.getString("url"));  
String jsonStr = mapper.writeValueAsString(email);  
UpdateRequest updateRequest = new UpdateRequest();  
updateRequest.index("email\_subscription");  
updateRequest.type("data");  
updateRequest.id("21.33.81.65.32.45");  
updateRequest.doc(jsonBuilder().startObject()  
.field("gender", "male")  
.endObject());  
esClient.update(updateRequest).getId();

but i am getting some issue in the code of jsonBuilder().startObject()

---

<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:** [July 24, 2018, 8:53am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/14 "2018-07-24T08:53:26Z")

</div>

Please format your code, logs or configuration files using `</>` icon as explained in [this guide](https://discuss.elastic.co/t/about-the-elasticsearch-category/21) and not the citation button. It will make your post more readable.

Or use markdown style like:

````
```
CODE
```

````

This is the icon to use if you are not using markdown format:

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/7/e/7e6e239431ec2d71cbf1beef741f2e93e7cc762c.jpg)

There's a live preview panel for exactly this reasons.

Lots of people read these forums, and many of them will simply skip over a post that is difficult to read, because it's just too large an investment of their time to try and follow a wall of badly formatted text.  
If your goal is to get an answer to your questions, it's in your interest to make it as easy to read and understand as possible.  
Please update your post.

Please share what is the exact problem you have.  
Also, I don't recommend using the update API unless you absolutely need it but prefer the index document API.

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 24, 2018, 8:58am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/15 "2018-07-24T08:58:04Z")

</div>

i am unable to find out exact example for update particular record by using id in elastic search and i am prepared like this to update record in elastic index

```
Email email=new Email();
email.setCounter(Integer.parseInt(subData.getString("counter"))+1+"");
email.setCreatets(subData.getString("createts"));
email.setEmail(subData.getString("email"));
email.setSource(subData.getString("source"));
email.setLast_updated_ts(java.time.LocalDate.now()+" "+java.time.LocalTime.now());
email.setUrl(subData.getString("url"));
String jsonStr = mapper.writeValueAsString(email);
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("email_subscription");
updateRequest.type("data");
updateRequest.id("21.33.81.65.32.45");
updateRequest.doc(jsonBuilder().startObject()
.field("gender", "male")
.endObject());
esClient.update(updateRequest).getId();

```

but i am getting some issue in the code of `jsonBuilder().startObject()`

---

<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:** [July 24, 2018, 9:49am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/16 "2018-07-24T09:49:31Z")

</div>

Great job for the formatting!

Now, could you look at this:

> Please share what is the exact problem you have.  
> Also, I don't recommend using the update API unless you absolutely need it but prefer the index document API.

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 24, 2018, 11:23am UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/17 "2018-07-24T11:23:30Z")

</div>

will you provide example for update the particular document in elastic using java.i used Index Document Api. below is my prepared query for update when i run this code record not updated in elastic

```
Email email=new Email();
	     email.setCounter(Integer.parseInt(subData.getString("counter"))+1+"");
	   	email.setCreatets(subData.getString("create_ts"));
	   	email.setEmail(subData.getString("email"));
	   	email.setSource(subData.getString("source_site"));
	   	email.setLast_updated_ts(java.time.LocalDate.now()+" "+java.time.LocalTime.now());
	   	email.setUrl(subData.getString("url"));
	   	email.setId("d7jfy2QB1c0X8IBjl2oJ");
	   	UpdateRequest updateRequest = new UpdateRequest("email_subscription", "data", "d7jfy2QB1c0X8IBjl2oJ")
	   	        .script(new Script("ctx._source.last_updated_ts = \""+email.getLast_updated_ts()+"\","+"ctx._source.counter = \""+email.getCounter()+"\","
	   	        		+"ctx._source.create_ts = \""+email.getCreatets()+"\","+"ctx._source.email = \""+email.getEmail()+"\","+"ctx._source.source_site = \""+email.getSource()+"\","+
	   	        		"ctx._source.url = \""+email.getUrl()+"\""));
	   	esClient.update(updateRequest).getGetResult();
```

---

<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:** [July 24, 2018, 12:24pm UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/18 "2018-07-24T12:24:54Z")

</div>

Example here: [https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-update.html](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-document-update.html)

---

<div class="post-metadata">

**Author:** ![srinivasthouti](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@srinivasthouti](https://discuss.elastic.co/u/srinivasthouti)\
**Post date:** [July 24, 2018, 2:54pm UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/19 "2018-07-24T14:54:13Z")

</div>

is it possible delete and insert the record into elastic at a time .  
my scenario is i have record with id ' 1' delete that record and insert with some updated values with same id.

---

<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:** [July 24, 2018, 3:06pm UTC](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674/20 "2018-07-24T15:06:09Z")

</div>

```auto
DELETE test
PUT test/_doc/1
{
  "foo": "bar"
}
PUT test/_doc/1
{
  "foo": "baz"
}

```

The later call actually does something like:

```auto
DELETE test/_doc/1
PUT test/_doc/1
{
  "foo": "baz"
}

```

[Next page](https://discuss.elastic.co/t/insert-the-json-into-elastic-using-java/140674.md?page=2)
