I'm considering Elasticsearch as a search back-end for a mobile app. We would like the user to be able to search for songs based on tags and facets such as mood, genre, instruments, tempo.
There are 3 features we want to provide our users when searching for songs:
Provide suggested songs to the user based on a single song or a set of songs.
Using Elasticsearch, how would I get a list of songs the user might like based on other songs in their library or current playlist?
Provide suggested tag filters.
Using Elasticsearch, how would I get a list faceted filters that the user is likely to want to apply as they narrow down the songs they like? What "smarts" can it use to provide the suggestions?
Provide personalized suggestions based on historic preferences tracked in their profile.
Using Elasticsearch, how would I ensure that given an empty query or fresh search that the search results will promote (but not limit to) songs and filters that the user is likely to want to add to their playlist based on the songs they've played over time?