Your understanding is correct. To add more to it, nested documents are
stored in contiguous blocks in the index, making it very fast to resolve
the parent given a child and vice-versa. On the other hand for parent/child
there is sort or a hash table maintained on top of the index to match
parents with children. This makes indexing more flexible but search much
slower.

About your questions:
1. Indeed you cannot sort by fields of a child doc.
2. Correct.

My recommendation would be to only use parent/child when nested documents
are not applicable. They are much faster and memory-efficient at search
time. But sometimes, the need to reindex all nested documents might prove
not practical in which case parent/child might be an alternative.



On Tue, Jun 17, 2014 at 8:49 PM, Srinivasan Ramaswamy <[email protected]>
wrote:

> I searched the forum and internet in general, but i couldn't find clear
> answers about the differences in scoring. And most of the answers are
> pretty old. I would like to know all the important current
> differences/comparison between nested and parent-child documents.
>
> What i understood so far
> 1. parent and child are two different lucene docs (and guaranteed to be in
> same shard). nested docs are stored as a separate doc using some internal
> representation and they are also in the same shard as parent doc.
> 2. using nested document gives significantly better performance compared
> to parent-child documents.
> 3. any update to a nested document will trigger the whole parent document
> to be reindexed, but any update to child will reindex only the child doc
> 4. when you apply a filter on nested field, the filter will work but all
> the nested docs will be returned along with the parent  (its a feature in
> progress <https://github.com/elasticsearch/elasticsearch/issues/3022> ).
> we do not have this problem with parent-child.
>
> Questions or need to confirm my understanding
> 1. using nested documents will let me sort the documents based on fields
> in the nested documents, on the other hand i cannot sort by fields in child
> docs. (feature in progress
> <https://github.com/elasticsearch/elasticsearch/issues/2917>)
> 2. filtering results based on a field is possible with both nested and
> parent-child documents
>
> I am curious to know other differences from ranking/scoring perspective. I
> would ideally like to score the parent documents by an aggregate function
> (sum or avg) of a nested/child field. Any thoughts anyone ?
>
> Thanks
> Srini
>
>  --
> 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/8183aa8d-1efc-40e5-8555-120bca8ff426%40googlegroups.com
> <https://groups.google.com/d/msgid/elasticsearch/8183aa8d-1efc-40e5-8555-120bca8ff426%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Adrien Grand

-- 
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/CAL6Z4j59Nz6UT29%2BnY_zzUT34ApQOH4%3DLcnzA5nKSqQ_SSnGgw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to