Ich habe einen Anwendungsfall der elastischen Suche, um ein Dokument zu aktualisieren.Elastische Suche Update von Abfrage zu komplexen Dokument aktualisieren
Mein Arzt ist so etwas wie this-
{
"first_name" : "firstName",
"last_name" : "lastName",
"version" : 1234,
"user_roles" : {
"version" : 12345,
"id" : 1234,
"name" : "role1"},
},
"groups" : {
"version" : 123,
"list": [
{"id":123, "name" : "ashd"},
{"id":1234, "name" : "awshd"},
]
}
}
Jetzt auf einige Feed depepeding werde ich entweder die Eltern doc updaten oder die verschachtelten doc updaten.
ich in der Lage bin zu finden, wie die grundlegenden Attribute wie vorName zu aktualisieren und Nachnamen aber nicht in der Lage zu bekommen, wie komplex/verschachtelt diejenigen aktualisieren
Ich habe so etwas wie von REST mandanten
"script": {
"inline": "ctx._source.user_roles = { "id" : 5678, "name" :"hcsdl"}
}
aber es gibt mir Ausnahme-
Tatsächlichen Anwendungsfall- Ich werde tatsächlich eine Karte in Java bekommen. Dieser Schlüssel kann ein einfacher Schlüssel wie "first_name" sein oder ein komplexer Schlüssel wie "user_role" und "groups" sein. Ich möchte das Dokument mit update by query auf Version aktualisieren.
Der Code, den ich geschrieben habe, ist etwas wie-
for (String key : document.keySet()) {
String value = defaultObjectMapper.writeValueAsString(document.get(key));
scriptBuilder.append("ctx._source.");
scriptBuilder.append(key);
scriptBuilder.append('=');
scriptBuilder.append(value);
scriptBuilder.append(";");
}
wo Dokument der Karte Nun könnte ich die einfachen Felder erhalten oder komplexes Objekt zu aktualisieren. Ich habe versucht, Schlüssel wie user_roles.id und user_roles.name zu geben und habe auch versucht, komplette user_roles zu geben, aber nichts funktioniert.
Kann jemand Helpout
Welche Ausnahme Sie bekommen? Wahrscheinlich müssen Sie den doppelten Anführungszeichen entkommen. – Val