I would like to be able to filter documents based on the number of elements 
in a list of nested object. In the classic example of posts, I am modeiing 
the comments field as a nested field of the post type. I would like to be 
able to query all posts where # comments = N. 

I do not have a clear idea about how to do this, and would like some ideas 
please. Here is a gist that shows what the model is like. I have created 2 
comments fields - one nested and one unnested in case the  methods for 
doing this depend on type of object, even though in my case I really need a 
nested object.

https://gist.github.com/haydenmarchant/213e03924e79b4412200

I have a few options on the plate:

1. Craft a query/filter that will express this constraint using a script 
such as :

"doc["comments.id'].values.size() == 2"

2. Have an additional field called comments_count field in the post 
document which is automatically maintained each time a comment is added.

3. Similar to #2, manually maintain a comment_count field in the post 
document.

Even if I manage to do #1, the question is how costly it will be on my 
queries. I intend on using this as one of many filters in document 
aggregations for a reporting console. e.g. give me breakdown of blogs by 
date where #comment > 3, and post is tagged 'sport' and age of poster is > 
45.

I am indexing using the Bulk API, and even though I see a way to invoke a 
script during update of a document, I don't see how this can be done during 
Bulk update. 

Manually maintaining a counter field only works if I have all instances of 
comments each time I update a post - this means that I'd have to read, 
modify & write.







-- 
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/0c28c76a-30a9-44fe-9a37-1807a410541c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to