Stellen Sie sich vor Sie haben eine SQL-Datenbank wie MySQL oder Postgresql. Sie haben zwei Tabellen: Benutzer und Auto. Ein Benutzer kann N Autos fahren, ein Auto kann von N Benutzern gefahren werden, so dass Sie eine dritte "Laufwerk" -Tabelle mit zwei Fremdschlüsseln haben.Gute Praktiken zwischen SQL und elasticsearch
Jetzt möchten Sie, dass Ihre Tabelle Benutzer elasticsearch geht, weil Sie Benutzer nach Name, E-Mail ... etc suchen möchten ... Vielleicht müssen Sie auch einige Suche auf der Autotabelle tun.
Ich sehe drei Weg, dies zu erreichen, ich d'gerne wissen, was der beste Weg ist:
1) Abandon die SQL-Datenbank. Alle deine Tische sind jetzt auf elasticsearch. Sie können suchen, was Sie wollen, aber Sie müssen alle Ihre Einschränkungen manuell behandeln.
2) Halten Sie die Struktur auf der SQL-Datenbank, behalten Sie Ihre drei Tabellen, die Primärschlüssel und die Fremdschlüssel. Ihre Tabellen enthalten jedoch nur die Elasticsearch-ID der zugehörigen Zeile in elasticsearch. Zum Beispiel in Tabelle Benutzer, halten Sie user_id und fügen Sie eine user_elasticsearch_id, die auf die elasticsearch Zeile, wo Sie den Namen, die E-Mail ... etc ... Also haben Sie Ihre SQL-Einschränkungen, können Sie suchen, aber Sie müssen beibehalten zwei Tische.
3) Duplizieren. Sie berühren Ihre SQL-Datenbank nicht, Sie duplizieren alle Zeilen in der ElasticSearch-Datenbank. Sie haben Ihre Beschränkungen, Sie können suchen, aber wieder müssen Sie zwei Tabellen verwalten, und Sie haben zweimal die Daten und zweimal den Speicher.
Nun, tapferer Kollege von stackoverflow, was würdest du in diesem Fall tun?
Vielen Dank.
Diese Antwort soll helfen: http://stackoverflow.com/questions/36915428/how-to-setup-elasticsearch-index-structure-with-multiple-entity-bindings/36982705#36982705 und dies auch: http: //stackoverflow.com/questions/40410920/elasticsearch-usage-with-mysql/40415430#40415430 – Val
Danke, ich werde das lesen :-) –