First, some background information: my ES cluster will store accounts and
users. Users belong to accounts (many-to-1), and each account can have
custom user attributes (of various types and possibly having different
analyzers) modifiable at runtime. There will be thousands of accounts in ES
with possibly hundreds of millions of users in total.
I have about three options so far and I really cannot decide which one will
The first solution is to store all users in the same index using a single
mapping - the removal or the change of a custom attribute will require a
full reindex of all users, which would probably take quite a while. In
addition to that, the mapping will be huge, as it will contain all the
custom attributes of each account.
The second option is to partition users by account using indexes - i.e. one
index will store only the users belonging to one account.
The third option is to partition users by account using mappings - the
users will be stored in the same index, but there will be a different
mapping for each account.
From a development point of view, option #2 will probably be the best, but
I assume the large number of indexes will have a negative impact on the
Option #3 still looks better than #1, but since mappings don't support
aliases, I will have to account for a dynamic mapping name when I query the
users for a given account.
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firstname.lastname@example.org.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/8fc322fc-15d5-44c1-be0a-bf7100c09f5c%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.