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

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

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;
		}
	}
}

This is working for my usecase:

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 -> elasticsearch-java/RequestTest.java at main · elastic/elasticsearch-java · GitHub

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

Painless

Thanks - Enomine

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