Det är ett viktigt sökanvändningsfall, och MongoDB och Redis är perfekta för nyckelbaserade uppslagningar och inte för sökändamål, medan Elasticsearch är en distribuerad sökmotor, byggd speciellt för sådana användningsfall.
Innan du väljer system bör du veta hur din funktion fungerar internt och under övervägandet för att välja det.
Icke-funktionella krav för din funktion
- Vad skulle det totala antalet sökfrågor per sekund (QPS) vara?
- Hur ofta skulle du uppdatera dokumenten (dvs. namnen i ditt exempel).
- Vad är SLA efter namn som uppdateras och kommer i sökresultatet?
- SLA för dina sökresultat.
Några funktionella krav.
- Hur ska autoslutförande se ut, prefix, infixsökning på namn?
- Minst hur många tecken användaren ska skriva innan han visar resultaten för autoslutförande.
- Hur ofta ovanstående krav kan ändras.
Elasticsearch indexerade dokument i det inverterade indexet och fungerar på tokens matchar (som enkelt kan anpassas för att passa affärsbehov), och därför supersnabb sökning. Redis och MongoDB har inte denna struktur internt och bör inte användas för detta användningsfall. Du bör inte tvivla på att välja Elasticsearch framför dessa för att implementera Autocomplete.