elasticsearch 父子索引问题

用惯了关系型数据库再转到 es对父子关系习焉不察。 以前不曾踏入此坑,因此就斗胆用了。

父子关系致使磁盘占用分布不均

以相册和图片为例。相册有可见属性,图片没有,需从相册哪里继承,若是是 mysql 用关系型数据库这样的思想正常不过。
可是 es 上父与子必须在同一个 shard 上,因相册图片有多有少,文档分布不均那也是先花后果的事。node

负载不均衡

若是用户进行了批量写操做,那么同一相册的图片必在同一机器。以前常常发生 es response timeout。mysql

查看 节点状态: CURL _nodes/stats/thread_pool?prettysql

一台机器 bulk queue 满,其余两台为空。数据库

cpu 使用至关不合理

后来重建了索引,在同一的压力下,没有父子关系的索引 cpu 占用一直在 5% 如下,使用父子关系索引 cpu 不曾降过100%。
相差甚大,令人汗颜~!code

操做麻烦

子文档必须找到父文档的 id 才能进行找到响应的 shard 而后进行相应的操做。继承

【总结】索引

若是能够不用那就千万不要用父子文档,虽然没有明文限制,就像 mysql like 查询,能不用就千万不用~!图片

相关文章
相关标签/搜索