Heim > Artikel > Backend-Entwicklung > Wie entwerfe ich eine Elasticsearch-Indexstruktur für N:M-Beziehungen?
Einrichten der Elasticsearch-Indexstruktur für mehrere Entitätsbindungen
Einführung
Integration von Elasticsearch (ES ) in bestehende Anwendungen kann eine entmutigende Aufgabe sein. Dieser Dialog befasst sich mit einer Herausforderung beim Einrichten der ES-Indexstruktur beim Umgang mit mehreren Entitätsbindungen in einer Legacy-Datenbank.
Datenbankstruktur
Die bereitgestellte Datenbankstruktur enthält drei Tabellen: Produkte, Flags und flagsProducts, die eine N:M-Beziehung zwischen Produkten und Flags darstellen. Das Ziel besteht darin, diese Struktur in ES zu replizieren und gleichzeitig eine effiziente Abfrage zu optimieren.
Empfohlener Ansatz: Flattening
Anstatt die N:M-Beziehung beizubehalten, wird eine Flatterung empfohlen die Strukturierung und Erstellung von Produktdokumenten, die Flaggeninformationen einbetten. Dieser Ansatz vereinfacht Abfragen und verbessert den Datenzugriff.
Produktdokumentstruktur
Das abgeflachte Produktdokument würde die folgenden Felder enthalten:
Beispielproduktdokumente:
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] } { "id": "018357657529fef056cf396626812", "title": "Beta", "price": 355.0, "flags": ["Discount"] }
Produktzuordnungstyp
Der entsprechende Der Zuordnungstyp in ES wäre:
PUT products { "mappings": { "product": { "properties": { "id": { "type": "string", "index": "not_analyzed" }, "title": { "type": "string" }, "price": { "type": "double", "null_value": 0.0 }, "flags": { "type": "string", "index": "not_analyzed" } } } } }
Daten aus der Datenbank abrufen
Um die erforderlichen Daten aus der Datenbank für die Aufnahme in ES abzurufen, verwenden Sie die folgende SQL-Abfrage :
Das obige ist der detaillierte Inhalt vonWie entwerfe ich eine Elasticsearch-Indexstruktur für N:M-Beziehungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!