每日一博 | 得物社区亿级 ES 数据搜索性能调优实践
1.背景 2020年以来内容标注结果搜索就是社区中后台业务的核心高频使用场景之一,为了支撑复杂的后台搜索,我们将社区内容的关键信息额外存了一份到Elasticsearch中作为二级索引使用。随着标注业务的细分、迭代和时间的推移,这个索引的文档数和搜索的RT开始逐步上升。下面是这个索引当前的监控情况。 本文介绍社区利用IndexSorting,将亿级文档搜索性能由最开始2000ms优化到50ms的过程。如果大家遇到相似的问题和场景,相信看完之后一定能够一行代码成吨收益。 2.探索过程 2.1 初步优化 最开始需求很简单,只需要取最新发布的动态分页展示。这时候实现也是简单粗暴,满足功能即可。查询语句如下: { "track_total_hits": true, "sort": [ { "publish_time": { "order": "desc" } } ], "size": 10 } 由于首页加载时没加任何筛选条件,于是变成了从亿级内容库中找出最新发布的10条内容。 针对这个查询很容易发现问题出现在大结果集的排序,要解决问题,自然的想到了两条路径: 去掉sort 缩小结果集 经过用户...
