Best way to handle Customer Specific Visibility

Hey guys,

This question may have been asked before, but when searching, I was not able to find an answer. I am new to the forums and elasticsearch so please bear with me.

I am currently working with the search application and am wondering the best way to handle the following requirement.

We currently have about 500,000 users who access our site, and our site offers around 1,000,000 products. Each user has access to a unique segment of the 500,000 products. Our biggest user has access to about 500,000 products, while our smallest has access to 5 products.

In the past, we had Lucene built into our application, and the way that I would handle this is that I would create a bitset and filter on that bitset when performing the query. I didn't store any of the user-specific access in Lucene as that would have made my documents huge.

When reading the ES documentation, I stumbled across Alias and potentially adding a filter to an Alias; however, I learned that could cause cluster performance issues. I would also think that performance of an Alias with an id list of up to 250,000 would be bad for performance.

I have also read in the documentation that ES has a way to join to different indexes, but I have learned that this option is very expensive.

Any suggestions on how I can go about achieving this would be very much appreciated.

Thanks again, and I apologize if this has been discussed and was unable to find the thread.


What is the average number of products a user has access to? How often does this change?

50,000 is the average but it is unique to every user. It is updated whenever a user completes a sale, (only that user that bought the product is updated). We receive an order every couple minutes.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.