ES文档结构优化

[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/es-structure-optimization.html

今天来介绍一个不错的优化:

背景

因为我们对订单的ES索引模板中,orderExtendInfoList存储多个扩展属性,用作外部订单号、二程运单号等信息的存储,业务上需要对其作为条件进行索引,为此我们把他设置为嵌套nested类型。
偶然学习发现这种嵌套nested类型会导致每个订单下的orderExtendInfo都会生成多个文档,导致索引数据量放大几倍,会导致查询性能下降,故重新设计进行优化。

优化ES存储订单数据的结构

  • 把orderExtendInfoList打平并改为keyword类型(原来为嵌套类型), 内部额外存储一个作为索引用的值为原orderExtendInfo的key和value对应的Map

描述起来比较麻烦 大概是把下图左边的变成变成右边的

es索引优化1.png

效果

  • 4亿+数据量减少到只剩下5kw数据量,降低了十倍左右
  • 查询时的CPU与内存压力均降低10%左右
作者

神奇宝贝大师

发布于

2020-08-03

更新于

2020-03-10

许可协议

评论