Ich habe kürzlich ein paar Artikel über die Kombination von mongodb für die Speicherung und elasticsearch für die Indexierung/Suche gelesen. Ich fühle mich, als ob ich etwas verpasse. Warum würdest du diese Route gehen im Gegensatz zu nur using mongo to index die Daten? Welche Vorteile bringt elasticsearch und ist die zusätzliche Komplexität wert?Warum ElasticSearch mit Mongo verwenden?
Antwort
ElasticSearch implementiert viel mehr Funktionen, wie zum Beispiel benutzerdefinierte Aufteilung von Text in Wörter, benutzerdefinierte Stemming, facettierte Suche und vieles mehr. Während die (ziemlich einfache) Textsuche von MongoDB einiges davon erledigt, ist sie nicht annähernd so mächtig wie ElasticSearch.
Wenn Sie immer nur nach einer einzelnen Zeichenfolge in einem einzelnen Feld suchen, dann funktioniert das normale Abfragesystem von MongoDB hervorragend dafür. Wenn Sie nach Wörtern in mehreren Feldern suchen müssen, funktioniert die MongoDB-Textsuche. Wenn Sie mehr als das brauchen, ist ElasticSearch der richtige Weg.
Dericks Antwort ziemlich Nägel es. Die Fragen dahinter sind:
Welche Funktionen möchten Sie in Ihrer Anwendung implementieren?
Wenn Sie in großen Textabschnitten auf umfangreiche Suchfunktionen angewiesen sind, ist ElasticSearch wahrscheinlich eine gute Anwendung. Wenn Sie einen flexiblen Datenspeicher haben möchten, der mit komplexen Ad-hoc-Abfragen umgehen kann, könnte Mongo eine gute Lösung sein. Wenn Sie unterschiedliche Anforderungen an einen Datenspeicher haben, ist es oft eine gute Sache, zwei Tools zu kombinieren, anstatt alle möglichen Problemumgehungen zu implementieren, damit es nur mit einem Datenspeicher funktioniert.
Wählen Sie das richtige Werkzeug für den Job.
Eine Suchmaschine und eine Datenbank machen einige grundlegend andere Dinge. Eine gute Suchmaschine (wie ElasticSearch) unterstützt weit umfangreichere und komplexere Indexierungen, Facetten, Hervorhebungen usw. Im Falle von ElasticSearch erhalten Sie Ihre Antworten auch in Echtzeit. Auf der anderen Seite gibt eine Suchmaschine nicht jedes einzelne Dokument zurück, das Ihrer Suchanfrage entspricht. Stattdessen werden die Dokumente entsprechend ihrer Übereinstimmung bewertet und die mit den höchsten Punktzahlen zurückgegeben. Wenn Sie eine Datenbank wie MongoDB abfragen, sollten Sie erwarten, dass sie alles zurückgibt, das Ihrer Abfrage entspricht.
Sie können das gesamte Dokument in ElasticSearch speichern, aber es ist normalerweise nicht die optimale Lösung. Normalerweise wird es so konfiguriert, dass es die Dokument-IDs zurückgibt, die Sie verwenden, um das Dokument aus einer Datenbank zu holen. MongoDB ist eine für den dokumentenbasierten Speicher optimierte Datenbank. Deshalb hören Sie von Leuten, die sie zusammen benutzen.
edit:
Wenn dies geschrieben wurde, ist es, die Empfehlungen angepasst, aber dies nicht mehr der Fall sein kann.
- 1. NoSQL (Mongo, DynaoDB) mit Elasticsearch vs einzigen Elasticsearch
- 2. Elasticsearch mongo-connector KeyError _id
- 3. Warum nicht min_score mit Elasticsearch verwenden?
- 4. Warum Platzhalter '@ `in Elasticsearch nicht verwenden kann?
- 5. Warum elasticsearch MacAddressProvider munged bytes
- 6. Wofür verwenden Menschen Elasticsearch?
- 7. Wie verwenden Sie aktive Datensatzzuordnungen mit ElasticSearch?
- 8. Verwenden von binären Typ mit NEST (elasticsearch)
- 9. JHipster Elasticsearch mit Amazon Elasticsearch Service
- 10. Verwenden Sie Mongo-Abfrage in Lumen
- 11. Verwenden des nativen Mongo-Treibers in Meteor
- 12. Kann Mongo-Export-Abfrage nicht verwenden
- 13. php Mongo finden nur 4 Kriterien verwenden
- 14. Verwenden von Mongo Find() mit $ in und Regex
- 15. Warum # 'mit Lambda verwenden?
- 16. Heroku-Einsatz mit Mongo
- 17. Docker mit mongo user
- 18. Python-Abfrage mit Mongo
- 19. Mongo $ -Gruppe mit $ Projekt
- 20. ElasticSearch findet System.NullReferenceException, aber nicht NullReferenceException - warum?
- 21. PHP Mongo: Hinweis: Mongo :: __ construct(): Parsen Server
- 22. elasticsearch: Wildcards für Integer-Werte verwenden
- 23. elasticsearch Warum ist Facette so langsam?
- 24. Elasticsearch mit Skript Sortierung
- 25. Einfache Mongo-Objekt-Upsert mit Strongloop
- 26. Elasticsearch - verwenden bucket Schlüssel als Filtervariable
- 27. Verwenden von Schindeln und Stoppwörtern mit Elasticsearch und Lucene 4.4
- 28. rails: typ suche mit daten adresse verwenden elasticsearch zäh gem
- 29. Verwenden von Interface abgeleiteten Klassen mit NEST und ElasticSearch
- 30. So verwenden Sie ElasticSearch-Distanzabfrage mit mehr als einem Geopoint
Können Sie einen Anwendungsfall angeben? ich finde es nicht optimal, beide nosql zusammen zu nutzen, um etwas besonderes zu erreichen? –