# java.lang.IllegalArgumentException: Class class co.elastic.clients.elasticsearch.core.bulk.UpdateOperation cannot be read from JSON

**URL:** <https://discuss.elastic.co/t/java-lang-illegalargumentexception-class-class-co-elastic-clients-elasticsearch-core-bulk-updateoperation-cannot-be-read-from-json/317609>\
**Category:** Elasticsearch\
**Created:** [October 27, 2022, 11:39am UTC](https://discuss.elastic.co/t/java-lang-illegalargumentexception-class-class-co-elastic-clients-elasticsearch-core-bulk-updateoperation-cannot-be-read-from-json/317609 "2022-10-27T11:39:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Michael\_Gattinger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/michael_gattinger/32/99690_2.png) [@Michael\_Gattinger](https://discuss.elastic.co/u/Michael_Gattinger)\
**Post date:** [October 27, 2022, 11:39am UTC](https://discuss.elastic.co/t/java-lang-illegalargumentexception-class-class-co-elastic-clients-elasticsearch-core-bulk-updateoperation-cannot-be-read-from-json/317609/1 "2022-10-27T11:39:31Z")

</div>

```auto
BulkRequest.Builder brb = new BulkRequest.Builder().index("foo");
//first try
Rechnung r6 = new Rechnung();
r6.Rechnungsbetrag = 49.99f;
ObjectMapper mapper = new ObjectMapper();
String myjson = mapper.writeValueAsString(r6);
brb.operations(buop -> buop.update(upop -> upop.id("" + Rechnungsnummer).withJson(new StringReader(myjson))));
//second try (explicitly saying it is a partial document)
UpdateOperation.Builder<Void, Rechnung> up = new UpdateOperation.Builder<Void, Rechnung>();
up.id("" + Rechnungsnummer).withJson(new StringReader(myjson));
BulkOperation bo3 = new BulkOperation.Builder().update(up.build()).build();
brb.operations(bo3);

```

Both will give  
java.lang.IllegalArgumentException: Class class co.elastic.clients.elasticsearch.core.bulk.UpdateOperation cannot be read from JSON  
on "withJson(...)".

Any ideas?

"myjson" has following value: {"Rechnungsnummer":0,"Rechnungsdatum":null,"Rechnungsbetrag":49.99,"Gläubiger":null,"Schuldner":null,"Bezahlt":false,"Mahndatum":null}

Thanks - Enomine

```auto
public class Rechnung {
	public int Rechnungsnummer;
	public Date Rechnungsdatum;
	public float	Rechnungsbetrag;
	public String	Gläubiger;
	public String	Schuldner;
	public boolean	Bezahlt;
	public Date Mahndatum;

	Rechnung() {

	}

	Rechnung(int Rechnungsnummer, Date Rechnungsdatum, float Rechnungsbetrag, String Gläubiger, String Schuldner, boolean Bezahlt) {
		this(Rechnungsnummer, Rechnungsdatum, Rechnungsbetrag, Gläubiger, Schuldner);
		this.Bezahlt = Bezahlt;
	}

	Rechnung(int Rechnungsnummer, Date Rechnungsdatum, float Rechnungsbetrag, String Gläubiger, String Schuldner) {
		this.Rechnungsnummer = Rechnungsnummer;
		this.Rechnungsdatum = Rechnungsdatum;
		this.Rechnungsbetrag = Rechnungsbetrag;
		this.Gläubiger = Gläubiger;
		this.Schuldner = Schuldner;
	}

	public String toString() {
		if (Mahndatum != null) {
			return "Rechnung: Rn: " + Rechnungsnummer + " Rd: " + Rechnungsdatum
				+ " Rb: " + Rechnungsbetrag + " Gl: " + Gläubiger
				+ " Sc: " + Schuldner + " Be: " + Bezahlt + " Md: " + Mahndatum;
		} else {
			return "Rechnung: Rn: " + Rechnungsnummer + " Rd: " + Rechnungsdatum
				+ " Rb: " + Rechnungsbetrag + " Gl: " + Gläubiger
				+ " Sc: " + Schuldner + " Be: " + Bezahlt;
		}
	}
}

```

---

<div class="post-metadata">

**Author:** ![Michael\_Gattinger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/michael_gattinger/32/99690_2.png) [@Michael\_Gattinger](https://discuss.elastic.co/u/Michael_Gattinger)\
**Post date:** [October 28, 2022, 4:14am UTC](https://discuss.elastic.co/t/java-lang-illegalargumentexception-class-class-co-elastic-clients-elasticsearch-core-bulk-updateoperation-cannot-be-read-from-json/317609/2 "2022-10-28T04:14:44Z")

</div>

This is working for my usecase:

```auto
BulkRequest.Builder brb = new BulkRequest.Builder().index(rechnungen10);
Rechnung r6 = new Rechnung();
r6.Rechnungsbetrag = 49.99f;
brb.operations(buop -> buop.update(uo -> uo.id("" + Rechnungsnummer).action(ua -> ua.doc(r6))));

```

Found at [New JAVA API Documentation](https://discuss.elastic.co/t/new-java-api-documentation/299559) -\> [elasticsearch-java/RequestTest.java at main · elastic/elasticsearch-java · GitHub](https://github.com/elastic/elasticsearch-java/blob/main/java-client/src/test/java/co/elastic/clients/elasticsearch/end_to_end/RequestTest.java#L209-L247)

Elasticsearch Java API Client should be more like this skripting thing =) ... How do you call it?

Painless

Thanks - Enomine

---

<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:** [November 25, 2022, 4:14am UTC](https://discuss.elastic.co/t/java-lang-illegalargumentexception-class-class-co-elastic-clients-elasticsearch-core-bulk-updateoperation-cannot-be-read-from-json/317609/3 "2022-11-25T04:14:46Z")

</div>

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