Okay, thank you for your response, here is an attempt of an example of what 
I am trying to achieve.

Lets say I have the documents;


{

id: 1

name: peter

class: 2

grade: b

hair:grey

 }

{

id:2

name: paul

class:2

grade:b

hair:purple

}

{

id:3

name:john

class:1

grade:b

hair:grey

}

{

id:4

name:sandra

class:1

grade:a

hair:green

}

{

id:5

name:sarah

class:1

grade:a

hair:green

}

Initially I want to get only one student from each possible [class, grade] 
combinaion so I want ES to return peter, john and sandra but not paul or 
sarah . The grades will range from the letters [a,b,c,d,e] but the class 
could be anything.

Additionally I might want to add a condition to this, such as only getting 
students with green hair. In that case I would only want to return sandra 
as while sarah has green hair - they have the same [class,grade] as sandra.

I thought about using facets for the first query but I cannot see how that 
would give me a collection of the right ids to make the second query with. 

On Thursday, January 9, 2014 7:57:09 AM UTC, David Pilato wrote:
>
> May be you could find a way to do that with a single query if you design 
> your documents in another way?
> Or using facets for the first query and Ids filter for the second?
> It's hard to tell without a concrete example of JSON documents.
>
> -- 
> *David Pilato* | *Technical Advocate* | *Elasticsearch.com*
> @dadoonet <https://twitter.com/dadoonet> | 
> @elasticsearchfr<https://twitter.com/elasticsearchfr>
>
>
> Le 9 janvier 2014 at 01:28:06, [email protected] <javascript:> (
> [email protected] <javascript:>) a écrit:
>
>  Hello
>
> I am currently trying to migrate an sql application to Elasticsearch. 
>
> I need to be able to select a collection of results from an index 
> which, for given search conditions, have distinct pairings of two certain 
> columns. In sql I do the following two queries:
>
> Query 1:
>  SELECT column_A, column_B, GROUP_CONCAT (table_name..id) id FROM 
> `table_name` WHERE `column_?` = '<something>' GROUP BY column_A, column_B, 
> column_?
>  
> Query 2:
>   SELECT `table_name`.* FROM `table_name `  WHERE  `column_?` = 
> '<something>'  AND (`table_name.id` IN (<ids_from_previous_query>))
>  
> The first query returns me a list of ids from table_name such that each id 
> satisfies the condition `column_?` = '<something>' and the record with that 
> id has a distinct [column_A,column_B]
>
> The second query then returns me all the records satisfying  `column_?` = 
> '<something>' but only from that range of ids (I realise I probably do not 
> need to do `column_?` = '<something> again in the second query.)
>
> The result is that each record returned by the second query has satisfies 
> the condition  `column_?` = '<something>'  and I am only returned one 
> record for each [column_A,column_B] paring.
>
> Since there is not really a 'distinct' option yet I am having trouble 
> finding a way replicate this output with ES and wondered if anyone might 
> have any thoughts as how I might go about it?
>
> At the moment I am open to any mapping / query combinations that will 
> achieve what I need.
>  --
> 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/6a857778-0399-4b3c-9973-a3e353436311%40googlegroups.com
> .
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

-- 
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/49dc9bd6-cccc-4398-aabf-7133852907e5%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to