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.
