So richten Sie die ElasticSearch-Indexstruktur mit mehreren Entitätsbindungen ein


or kurzem begann ich mit der Implementierung von ElasticSearch (ES) in eine ältere E-Commerce-App, die mit MySQL in PHP geschrieben wurde. Ich bin völlig neu in all diesen Dingen und das Lesen der Dokumente ist in Ordnung, aber ich brauche wirklich jemanden mit Erfahrung, der mich berät.

Aus der ES-Dokumentation konnte ich einen neuen Cluster erstellen und fand heraus, dass Flüsse veraltet sind und ersetzt werden sollten. Deshalb habe ich sie durch Logstash und JDBC MySQL Connector ersetzt.

n diesem Punkt habe ich:

ElasticSearch LogstashJDBC MySQL TreiberMySQL Server

Die Datenbankstruktur der Anwendung ist nicht wirklich optimal und lässt sich nur schwer ersetzen, aber ich möchte sie bestmöglich in den ES-Index replizieren.

DB Struktur:

Produkt

+-------------------------------+-------+--------+
|              Id               | Title | Price  |
+-------------------------------+-------+--------+
| 00c8234d71c4e94f725cd432ebc04 | Alpha | 589,00 |
| 018357657529fef056cf396626812 | Beta  | 355,00 |
| 01a2c32ceeff0fc6b7dd4fc4302ab | Gamma | 0,00   |
+-------------------------------+-------+--------+

Flagge

+------------+-------------+
|     Id     |    Title    |
+------------+-------------+
| sellout    | Sellout     |
| discount   | Discount    |
| topproduct | Top Product |
+------------+-------------+

flagsProducts (n: m Pivot)

+------+-------------------------------+------------+------------+
|  Id  |           ProductId           |   FlagId   | ExternalId |
+------+-------------------------------+------------+------------+
| 1552 | 00c8234d71c4e94f725cd432ebc04 | sellout    | NULL       |
| 2845 | 00c8234d71c4e94f725cd432ebc04 | topproduct | NULL       |
| 9689 | 018357657529fef056cf396626812 | discount   | NULL       |
| 4841 | 01a2c32ceeff0fc6b7dd4fc4302ab | discount   | NULL       |
+------+-------------------------------+------------+------------+

Diese String-IDs sind eine völlige Katastrophe (aber ich muss mich jetzt darum kümmern). Zuerst dachte ich, ich sollte eine flache Struktur des Produktindex für ES erstellen, aber was ist mit Bindungen für mehrere Entitäten?