Problem:
Implementierung von ElasticSearch (ES) für eine bestehende e -Commerce-Anwendung mit einer MySQL-Datenbank. Wie sollte die Indexstruktur eingerichtet werden, um ein komplexes Datenbankschema mit mehreren Entitäten darzustellen? Bindungen?
Antwort:
Denormalisierungsansatz:
Um mehrere Entitätsbindungen zu verarbeiten, wird ein denormalisierter Ansatz empfohlen. Reduzieren Sie die Datenstruktur, indem Sie eine Eins-zu-Eins-Zuordnung zwischen Dokumenten und Entitäten erstellen. Erstellen Sie in diesem Fall einen einzelnen Dokumenttyp mit dem Namen „Produkt“, der alle erforderlichen Felder aus den Tabellen „Produkte“, „Flags“ und „FlagsProdukte“ enthält.
Produktdokumentstruktur:
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] }
ElasticSearch Mapping:
Der Zuordnungstyp für die Der Index „Produkt“ würde wie folgt aussehen:
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" } } } } }
SQL-Abfrage für die Datenextraktion:
Um die erforderlichen Daten aus der Datenbank zu extrahieren, verwenden Sie die folgende SQL-Abfrage:
Das obige ist der detaillierte Inhalt vonWie strukturiert man einen ElasticSearch-Index für mehrere Entitätsbindungen in einer E-Commerce-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!