Hi, I am using nested objects for indexing “ratings” on an object, where a rating contains two properties: the owner and the rating. I want to be able to filter and facet on “my ratings”. So to filter, for example, on objects I have rated a “10", I am using a filter like
{
“nested” : {
“path” : “ratings”,
“filter” : {
“and” : [{
“term” { “ratings.rating” : 10 },
“term” { “ratings.owner” : “my_id” }
}]
}
}
}
I also want to facet on “my rating”, which in a basic form I’m doing like this:
“facets” : {
“my_ratings” : {
“nested” : “ratings”,
“terms” : {
“field” : “ratings.rating”,
“size” : 10
},
“facet_filter” : {
“term” : { “ratings.owner” : “my_id” }
}
}
}
That seems to be working fine. The problem is when I have other filters in the mix. If I am also filtering my query by other fields, I need to include those filters in my facet, so that I’m getting back facet counts that match the results with the other filters applied. My problem is that I don’t know how to combine nested and non-nested filters in facet_filter. If I just throw them in together, my counts all go to zero:
“facets” : {
“my_ratings” : {
“nested” : “ratings”,
“terms” : {
“field” : “ratings.rating”,
“size” : 10
},
“facet_filter” : {
“and” : [{
“term” : { “ratings.owner” : “my_id” }
},{
“term” : { “a_different_field” : “blah” }
}]
}
}
}
Here is a gist to demonstrate:
It runs two queries, the first is the basic nested facet (returns what I would expect), and the last query is what I want to get working, but is returning no counts.
Thanks for any help!
Nathan
--
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+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/A3B6ECDB-9CB5-4532-A2F9-8EAA66B9EFD0%40gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.