2017-10-10 1 views
0

Ich habe ein Multi-Tenant-System, bei dem jeder Mandant seine eigene Mongo-Datenbank innerhalb einer MongoDB-Implementierung erhält.Kann ein Elasticsearch-Index einen Primärschlüssel aus mehreren Feldern enthalten?

Für elastische Indexierung indiziert dies alles über Mongoosastic in eine elastische Instanz, die mit einer TenantDB versehen ist, um Daten bei der Suche getrennt zu halten.

Zur Zeit haben wir einige der gleichen _id's in den verschiedenen Datenbanken in Testdaten für verschiedene Konfig-Sammlungen wiederverwendet (Unterschiedlicher Dokumentinhalt, gleiche _id), dies verursacht jedoch ein Problem bei der Synchronisierung mit elastic, obwohl sie separat sind Datenbanken, wenn sie in elastisch mit dem gleichen Typ und ID kommen, wird einer von ihnen fallengelassen.

Ist es möglich, sowohl die ID als auch TenantDB als Primärschlüssel anzugeben?

Antwort

0

Lösung 1: Sie können in Elasticsearch nach mehreren Indizes suchen. Aber, wenn Sie Ihren Index für die Datenbank nicht trennen können, können Sie wie folgt Methode folgen. Verwenden Sie beim Synchronisieren Ihrer Daten mit elasticsearch ein Muster, um das elastische Dokument _id zu erstellen. Zum Beispiel, von MongoDb1 verwenden mdb1_{mongo_id}, von MongoDb2 verwenden mdb2_{mongo_id}, etc. Dies wird eindeutig Ihre _ids, wenn Sie nicht die gleiche ID in der gleichen Mongo-Datenbank haben.

Lösung 2: Trennen Sie Ihren Index.

Verwandte Themen