Is there any difference or any implications if there is also need of 
aggregations? 

On Wednesday, December 10, 2014 4:57:10 PM UTC+1, Itamar Syn-Hershko wrote:
>
> Basically, you will have to maintain more filters. Also Lucene supports up 
> to certain amount of fields, it wasn't designed to handle unlimited number 
> of them
>
> --
>
> Itamar Syn-Hershko
> http://code972.com | @synhershko <https://twitter.com/synhershko>
> Freelance Developer & Consultant
> Author of RavenDB in Action <http://manning.com/synhershko/>
>
> On Wed, Dec 10, 2014 at 10:35 AM, Dror Atariah <[email protected] 
> <javascript:>> wrote:
>
>> @Itamar: Can you please elaborate on the matter? Why/how does the number 
>> of fields relevant here?
>>
>> On Wednesday, December 10, 2014 4:26:16 PM UTC+1, Itamar Syn-Hershko 
>> wrote:
>>>
>>> Lucene / Elasticsearch is pretty much insignificant to this as long as 
>>> you use filters. You should prefer not_analyzed fields with string values 
>>> to represent those flags vs having dedicated boolean fields if you will 
>>> have more than a few such flags.
>>>
>>> --
>>>
>>> Itamar Syn-Hershko
>>> http://code972.com | @synhershko <https://twitter.com/synhershko>
>>> Freelance Developer & Consultant
>>> Author of RavenDB in Action <http://manning.com/synhershko/>
>>>
>>> On Wed, Dec 10, 2014 at 10:22 AM, Dror Atariah <[email protected]> wrote:
>>>
>>>> Assume that I want to be able to flag documents in an index according 
>>>> to their attributes: isFoo and isBar [1]. As far as I understand, there 
>>>> are 
>>>> two approaches:
>>>>
>>>> 1) Use dedicated fields for the flags: If the document is a Foo then 
>>>> add a field named isFoo. Similarly, for isBar. 
>>>> 2) Use a flags field that will be an array of strings. In this case, if 
>>>> the document is Foo then "flags" will contain the string "isFoo".
>>>>
>>>> What are the pros and cons in terms of space and runtime complexities?
>>>>
>>>> Bear in mind the following queries examples: Consider the case where 
>>>> one wants to check the attributes of the documents in the index. In 
>>>> particular, if I want to find the documents that are either Foo *or* Bar I 
>>>> can either 
>>>> (a) In case (1): Use a Boolean "should" filter the surrounds two 
>>>> "exists"'s filters checking whether either isFoo or isBar exist.
>>>> (b) In case (2): Use a single "exists" filter that checks the existence 
>>>> of the field "flags".
>>>>
>>>> A different case, is if I want to find the documents that are both Foo 
>>>> *and* Bar:
>>>> (a) In case (1): Like before, replace the "should" with a "must".
>>>> (b) In case (2): Surround two "term"s filters with a "must" Boolean one.
>>>>
>>>> Lastly, finding the documents that are Foo but *not* Bar.
>>>>
>>>> In the bottom line, In case (1) all queries boil down to mixture of 
>>>> Boolean, exists and missing filters. In case (2), one has to process the 
>>>> strings in the array of strings named "flags". My intuition is that it is 
>>>> faster to use method (1). In terms of space complexity I believe there is 
>>>> no difference.
>>>>
>>>> I'm looking forward to your insights!
>>>> Dror
>>>>
>>>> [1]: Obviously, there could be way more flags...
>>>>
>>>> -- 
>>>> 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 [email protected].
>>>> To view this discussion on the web visit https://groups.google.com/d/
>>>> msgid/elasticsearch/ef637057-4303-4c75-9bbf-ed72e0d4806b%
>>>> 40googlegroups.com 
>>>> <https://groups.google.com/d/msgid/elasticsearch/ef637057-4303-4c75-9bbf-ed72e0d4806b%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 [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/elasticsearch/c376b40d-1c46-43f5-952f-96ec01338788%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/elasticsearch/c376b40d-1c46-43f5-952f-96ec01338788%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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/a74d02d3-5065-4642-801e-a1823fab37a4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to