Ich versuche, die Löschung eines Dokuments im Frühjahr Daten elasticsearch Repository zu erhalten. Und nicht finden kann, Art und Weise, wie dieser Fehler zu beheben:Gibt es Unterstützung für das Routing beim Löschen im Repository oder in der Abfrageanmerkung?
[userindex] RoutingMissingException[routing is required for [userindex]/[address]/[12]
Ich habe zwei verknüpfte Dokumente:
@Document(indexName = "userindex", type = "user")
public class User {
@Field(index = FieldIndex.not_analyzed, type = FieldType.Long)
private Long userId;
...
}
@Document(indexName = "userindex", type = "address")
public class Address {
@Field(type = FieldType.String)
private String name;
@Field(index = FieldIndex.not_analyzed, type = FieldType.String)
private String addressId;
@Field(type = FieldType.String, store = true)
@Parent(type = "user")
private String parentId;
...
}
Wenn ich versuche, eine Adresse über ElasticsearchCrudRepository löschen < Adresse, Lange > unter Verwendung Standardmethode delete (Lange ID) I empfange RoutingMissingException wie oben erwähnt.
Wenn ich versuche, es zu tun ElasticSeach Client verwenden, wie folgt aus:
client.prepareDelete().setIndex("userindex")
.setType("address")
.setParent("user")
.setId(id.toString())
.execute().get();
alles funktioniert gut, aber scheint mir direkt die Arbeit mit Kunden ist nicht die Feder-Daten Art und Weise.
Auch ich kann keinen Weg finden, wie lösche Methode mit Annotation org.springframework.data.elasticsearch.annotations.Query anpassen. Ich überprüft Quellen von org.springframework.data.elasticsearch.core.ElasticsearchTemplate und kann keine Möglichkeit finden, wie Sie Unterstützung für die Abfrage löschen hinzufügen.
Weiß jemand, wie man es löst, anstatt einen Klienten zu benutzen?
Die Version von Feder-data-Elasticsearch ist 2.0.1
-Update 03.05.2017
Vor allem in meinem Code ein Fehler mit meiner Löschung war, nicht wie es funktionierte vor, aber es sollte sein:
client.prepareDelete().setIndex("userindex")
.setType("address")
.setParent("500")
.setId(id.toString())
.execute().get();
Hier Eltern-ID ist statt Typnamen. Und jetzt über die Federdaten Weg. Es gibt keinen Feder-Daten-Weg in der ElasticSearch-Integration.
Beweis:
Ok, hässlichste Lösung überhaupt. Sollte ich den 2GB-Index löschen und jedes Mal neu erstellen, wenn ich einen Datensatz löschen muss? – m1ld
kann nicht einmal als Lösung betrachtet werden – berkayk