MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Automatische Vervollständigung mit Java, Redis, Elastic Search, Mongo

Es ist ein kritischer Anwendungsfall für die Suche, und MongoDB und Redis eignen sich perfekt für schlüsselbasierte Suchen und nicht für Suchzwecke, während Elasticsearch eine verteilte Suchmaschine ist, die speziell für einen solchen Anwendungsfall entwickelt wurde.

Bevor Sie sich für das System entscheiden, sollten Sie wissen, wie Ihre Funktion intern funktioniert und welche Überlegungen für die Auswahl erforderlich sind.

Nicht-funktionale Anforderungen für Ihr Feature

  1. Wie hoch wäre die Gesamtzahl der Suchanfragen pro Sekunde (QPS)?
  2. Wie oft würden Sie die Dokumente aktualisieren (dh Namen in Ihrem Beispiel).
  3. Was ist die SLA, nachdem Namen aktualisiert und in die Suchergebnisse aufgenommen wurden?
  4. SLA für Ihre Suchergebnisse.

Einige funktionale Anforderungen.

  1. Wie sollte die automatische Vervollständigung aussehen, Präfix-, Infix-Suche nach Namen?
  2. Mindestanzahl von Zeichen, die der Benutzer eingeben sollte, bevor ihm die Ergebnisse der automatischen Vervollständigung angezeigt werden.
  3. Wie häufig sich die oben genannten Anforderungen ändern können.

Elasticsearch indiziert Dokumente im invertierten Index und funktioniert Ontoken-Match (die leicht an Geschäftsanforderungen angepasst werden können), daher superschnell bei der Suche. Redis und MongoDB haben diese Struktur intern nicht und sollten für diesen Anwendungsfall nicht verwendet werden. Sie sollten keine Zweifel haben, Elasticsearch diesen gegenüber zu wählen, um Autocomplete zu implementieren.