If you have thousands of tenants with thousands of potentially overlapping
mappings that should operate independently, the hardware sizing of a
cluster is a challenge, yes.

OTOH you can play tricks at your search/index front end API if you can hide
ES internals from the customers, e.g. prefixing field names with the tenant
ID so field names become unique. This should not be a recommended method,
though - because ES should be able to handle overlapping mappings in a more
feasible way.

Jörg

On Sat, Mar 14, 2015 at 7:38 PM, <shahsh...@gmail.com> wrote:

> Wouldn't that be a bit too much though ? I mean if we have thousands of
> customers (tenants) we will have to create index for each of them ?
> Wouldn't it affect performance and wouldn't maintaining those many indexes
> in the cluster a bit too much ?
>
> On Saturday, March 14, 2015 at 10:48:35 AM UTC-7, Jörg Prante wrote:
>>
>> You are right, I suggest to use different indices for tenant 1 and 2,
>> this is also good for separating other concerns (like index term
>> statistics, scoring, field faceting, deleting docs, etc.)
>>
>> As a matter of fact it is not Lucene that stands in the way. Internally,
>> ES keeps a hash map of field names across types, i.e. correct field name
>> lookup is a challenge if a field name denotes two different field
>> specifications in an index.
>>
>> Jörg
>>
>> On Fri, Mar 13, 2015 at 9:47 PM, <shah...@gmail.com> wrote:
>>
>>> I have detailed my question on stackoverflow here:
>>> http://stackoverflow.com/questions/29041509/field-
>>> names-with-the-same-name-across-types-having-different-
>>> index-type-in-elast
>>>
>>> Briefing it here as well :
>>>
>>> I have been reading a lot on mappings in Elasticsearch and here's
>>> something interesting that I found
>>>
>>> Field names with the same name across types are highly recommended to have
>>>  the same type and same mapping characteristics (analysis settings for
>>> example). There is an effort to allow to explicitly "choose" which field to
>>> use by using type prefix (my_type.my_field), but it’s not complete, and 
>>> there
>>> are places where it will never work (like faceting on the field).
>>>
>>> I found the above quote from the documentation here
>>> <http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html>
>>>
>>> Now my use case is exactly that .. Here's an example. Suppose that some
>>> field in tenant1 has to have the following mapping (for a given entity
>>> user):
>>>
>>> {
>>>   "tenantId1_user": {
>>>     "properties": {
>>>       "someField": {
>>>         "type": "string",
>>>         "index":"analyzed"
>>>       }
>>>     }
>>>   }
>>> }
>>>
>>> Now, for the same field in a different tenant (for the same entity type,
>>> lets say user), the type has to change like this:
>>>
>>> {
>>>   "tenantId2_user": {
>>>     "properties": {
>>>       "someField": {
>>>         "type": "int",
>>>         "index":"analyzed"
>>>       }
>>>     }
>>>   }
>>> }
>>>
>>> Now from what I understand from the above quote, it means that
>>> technically even though I can provide this mapping, it is not recommended
>>> because deep down Lucene handles them in the same way.
>>>
>>> My questions are:
>>>
>>> 1) How can I handle my usecase ? Should I just separate out each tenant
>>> in a different index so I don't have to worry about this mapping ?
>>>
>>> 2) Is there any other workaround ? Considering the fact that if I have
>>> too many tenants that means I will have too many indices?
>>>
>>> 3) What's the recommended way for this usecase?
>>>
>>> All help appreciated!
>>>
>>>  --
>>> 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 elasticsearc...@googlegroups.com.
>>> To view this discussion on the web visit https://groups.google.com/d/
>>> msgid/elasticsearch/0264dafc-82e9-44fb-8193-b2661e8225a6%
>>> 40googlegroups.com
>>> <https://groups.google.com/d/msgid/elasticsearch/0264dafc-82e9-44fb-8193-b2661e8225a6%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
> 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 elasticsearch+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elasticsearch/d41800b1-22ab-46ec-b4ee-a85ff298d50c%40googlegroups.com
> <https://groups.google.com/d/msgid/elasticsearch/d41800b1-22ab-46ec-b4ee-a85ff298d50c%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/CAKdsXoHj%2B%2BMmPQ1KUHYUTifek48rOCRM2TLLsvijpGP5k56SPg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to