Help on architecture

Hi everybody,

I'm currently evaluating elastic search to provide a super fast completion engine to our users.

The product is basically a social network enabling people to share content into groups.

When a user starts typing some words into the search bar, I would like elastic search to return results matching these words, for 4 types of objects : posts, users, tags, groups.

The query is not simple because a given user is allowed to see objects only if they share at least one group with him.

Example : if user A and user B are in group 1 and if user B publish in group 2, user A will not see the post.

What do you think ? Do I have to create 1 index per type of object ?

Do I have to create one index per user ?

But what if I need to get all the content shared by users from my network ? Do I have to search into thousands of indexes ?