Vous pouvez le faire en créant un deuxième index dans votre cluster ES. Lorsqu'un utilisateur soumet une recherche via votre application, vous effectuez deux étapes.
- Soumettez la recherche en tant que requête à Elasticsearch pour un comportement de recherche normal.
- Envoyez une demande d'indexation au cluster avec les termes de recherche fournis par l'utilisateur.
Avec un deuxième index de tous les termes de recherche qui ont été soumis, vous pouvez faire un certain nombre de choses intéressantes. Dans votre cas, vous pouvez avoir un champ 'count' comme dans SQL que vous incrémentez au fur et à mesure que de plus en plus de personnes recherchent ce terme. Un autre cas d'utilisation intéressant est celui des termes recommandés de style Google. Votre interface utilisateur peut soumettre une demande de recherche avec le texte saisi à chaque pression sur une touche et remplir une liste déroulante avec les résultats des termes précédemment recherchés. Vous pouvez même personnaliser cela en ajoutant un champ utilisateur et en filtrant les résultats qui ne proviennent pas de cet utilisateur particulier.
La chose à garder à l'esprit est qu'ElasticSearch peut être utilisé à la fois comme magasin de données principal et secondaire. Je suggère toujours que vous ne conserviez que les données que vous êtes prêt à perdre (comme l'historique de recherche) en tant que données primaires. Conservez les données critiques de votre système dans un magasin de données plus traditionnel comme SQL, de cette façon, il est facile de sauvegarder et de restaurer en cas de problème !