Let's suppose an ecommerce site has wishlisting functionality. Some users wishlist a lot of products (on a scale of tens of thousands). Total amount of products is in millions. We want to implement functionality where a customer can filter those products like in catalogue.
When we looked into implementing this using Elasticsearch, the best way we've found was using terms lookup. Like, we create a document for each user's wishlist, and then filter out products we need using this document. After that all filtering/etc is done regularly. The problem here is that Elasticsearch cannot sort those products properly — i.e. how document specifies it, since we want to sort by wishlisting time.
This is when I decided to look into Vespa. But after reading documentation I still have no idea what's the best way to implement this. This looks like a problem needing "join" to my rdbms-infected mind. :)
Cardinalities of data is like so:
- millions of products
- hundreds of thousands of users
- tens of thousands of wishlisted items
So... any ideas how to implement or pointers on what to read?