43221321 发表于 2017-3-8 13:41:06

elasticsearch 关联查询对比

两种方式 嵌套和父子关联

Nested
[*]Nested docs are stored in the same Lucene block as each other, which helps read/query performance. Reading a nested doc is faster than the equivalent parent/child.

[*]Updating a single field in a nested document (parent or nested children) forces ES to reindex the entire nested document. This can be very expensive for large nested docs

[*]"Cross referencing" nested documents is impossible

[*]Best suited for data that does not change frequently

Parent/Child
[*]Children are stored separately from the parent, but are routed to the same shard. So parent/children are slightly less performance on read/query than nested

[*]Parent/child mappings have a bit extra memory overhead, since ES maintains a "join" list in memory

[*]Updating a child doc does not affect the parent or any other children, which can potentially save a lot of indexing on large docs

[*]Sorting/scoring can be difficult with Parent/Child since the Has Child/Has Parent operations can be opaque at times


综上所述,两种方式均有利弊,官方建议,自己处理关联关系,减轻ES的压力。

页: [1]
查看完整版本: elasticsearch 关联查询对比