Du kan göra detta genom att skapa ett andra index i ditt ES-kluster. När en användare skickar in en sökning genom din ansökan utför du två steg.
- Skicka sökningen som en fråga till Elasticsearch för normalt sökbeteende.
- Skicka en indexförfrågan till klustret med de söktermer som användaren angav.
Med ett andra index över alla söktermer som har skickats in kan du göra en rad snygga saker. För ditt fall kan du ha ett "räknefält" precis som i SQL som du ökar när fler söker efter den termen. Ett annat bra användningsfall är termer som rekommenderas av google stil. Ditt användargränssnitt kan skicka en sökförfrågan med den inmatade texten vid varje knapptryckning och fylla i en rullgardinsmeny med träffar från de tidigare sökta termerna. Du kan till och med anpassa detta genom att lägga till ett användarfält och filtrera bort resultat som inte kommer från just den användaren.
Det man bör tänka på är att ElasticSearch kan användas som både ett primärt och sekundärt datalager. Jag föreslår alltid att du bara behåller data som du är villig att förlora (som sökhistorik) som primär data. Förvara din systemkritiska data i ett mer traditionellt datalager som SQL, på så sätt är det lätt att säkerhetskopiera och återställa om något skulle gå fel!