Hi,

I am trying to migrate a project from Lucene to elasticsearch, and for the 
most part it is a pleasure :)
However, I cannot wrap my head around how to recreate the drill sideways 
queries we currently use in Lucene.

The scenario is a basic search page with a free text search and a bunch of 
drill down/sideways facets. In Lucene, the hits that we get for each facet, 
is a correct representation of how many results we would get if that facet 
is used as a limit, but I am unable to do this in elasticsearch...

As an example (full gist available here: 
https://gist.github.com/bogundersen/e9bac02779e1c4a089dc)

I have three items:
Item 1:
  language : en_GB,
  year: 2013,
  author: [ John, Paul ]
Item 2:
  language : en_GB,
  year: 2012,
  author: [ John, George ]
Item 3:
  language : da_DK,
  year: 2012,
  author: [ Ringo ]

Now lets imagine that the user limits to year 2012. If I just include the 
facet in the query ("Search 2" in the gist), I would get the following 
facets:
year
  2012 : 2
author
  George 1
  John   1
  Ringo  1
language
  da_DK  1
  en_GB  1
The author and language facets show the correct numbers, but the year facet 
only shows year 2012 thereby not allowing the user to select another year 
without deselecting 2012.

A way around this is to use post filters ("Search 3" in the gist), using 
those I get the following facet results:
year
  2012 : 2
  2013 : 1
author
  John   2
  George 1
  Paul   1
  Ringo  1
language
  en_GB  2
  da_DK  1
Here the user is still presented with other years, but the numbers for 
author and language are not correct (e.g. selecting "John" will only give 1 
result, and not two)

The only way I can think of to make this work, is to do separate queries 
for each facet, but that seems counter intuitive and not very performance 
friendly. Any ideas on how to do this in elasticsearch?

-- 
Bo Madsen

-- 
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/2e97801f-a091-4f1d-8e31-1ffb777f287c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to