5

In einem CMS wird eine Liste von Kunden mithilfe einer regulären NDB-Abfrage mit Bestellung abgerufen. Um Filtern nach Name, Firmenname und E-Mail zu ermöglichen, erstelle ich mehrere (manchmal auch viele) Indizes. Die Situation war nicht ideal, aber praktikabel.Verwenden Sie den Datastore (NDB), die Such-API oder beide für Datenansichten?

Jetzt gibt es die (experimentelle) Search API. Es scheint keine Beziehung zum Datenspeicher (oder NDB) zu haben, aber meine Daten sind bereits da.

Ich möchte die Volltextsuche verwenden und Filter gleichzeitig auf mehrere Felder setzen. Soll ich also meine Daten im Datenspeicher behalten und Teile der Daten in Dokumente für die Such-API duplizieren? Oder überspringen Sie den Datenspeicher vollständig, wie der search example suggests.

Antwort

6

Ich bin nicht ganz sicher, was die empfohlene Methode für die Implementierung ist, aber die Search API scheint hauptsächlich als zusätzlicher manuell verwalteter Index verwendet zu werden. In den meisten Situationen ist es nicht ideal, alle Ihre Daten in der Such-API zu speichern, da Sie die Suchindex-API-Indizes problemlos mit Feldern auffüllen können, die Sie nie filtern oder durchsuchen müssen Situation, in der regelmäßige Schreibvorgänge notwendig sind.

Meine persönliche Empfehlung besteht darin, alle Ihre Daten in NDB zu belassen und Klassen zu erstellen, um Dokumente mit den relevanten durchsuchbaren Daten zu erstellen. Dabei wird die Konsistenz zwischen den beiden Medien beibehalten, indem die Such-API-Version bei jedem Schreibvorgang aktualisiert wird in die Datenspeicherversion (oder verwenden Sie tasks/crons oder ein ähnliches System, wenn Sie viel Daten schreiben). Sie sollten alle Daten auf der Benutzeroberfläche speichern, wenn Sie die Such-API-Dokumente für die entsprechenden Daten filtern, da das manuelle Verknüpfen der Such-API-Ergebnisse und der Datenspeicherdaten unnötig intensiv ist und den gesamten Prozess erheblich verlangsamt.

+0

Danke. Das ist ein sehr praktischer und nützlicher Ansatz für das Problem. – kvdb