2014-01-10 10 views

Antwort

22

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.

3

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.

11

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.

+0

Können Sie einen Anwendungsfall angeben? ich finde es nicht optimal, beide nosql zusammen zu nutzen, um etwas besonderes zu erreichen? –

Verwandte Themen