Elasticsearch 生产调优与索引设计
Elasticsearch 生产调优 📖 前置阅读:本文是 ES 系列的生产调优篇,假设读者已经掌握了 ES 核心概念、SpringBoot 操作和高级搜索聚合。如果还没有,建议先阅读前三篇: Elasticsearch 核心概念:倒排索引、分词器与 REST API 全解析 —— 介绍篇 SpringBoot Elasticsearch 全操作指南 —— 实战篇 ES 高级搜索与聚合分析 —— 进阶篇 一、⚡ 问题切入:搜索怎么越来越慢了? 商品从 10 万增加到 500 万,搜索响应时间从原来的 50ms 涨到了 2 秒。用户开始投诉"搜索好慢",产品经理开始质疑"ES 不是很快吗"。 你打开监控面板,发现: 搜索 P99 延迟 2.3 秒 ES 堆内存使用率 85% 磁盘 IO 等待时间飙升 GC 频率从每小时 2 次变成了每 5 分钟 1 次 问题出在哪?不一定是数据量大就一定慢。500 万数据对 ES 来说远没到上限——一个设计良好的 3 节点集群处理几亿数据都没问题。慢的往往是索引设计不合理、查询写得不高效、分页方式用错了。 本篇要解决的问题:怎么设计索引让 500 万数据搜索保持在 100ms 以内,以及遇到性能问题时从哪下手排查。 二、🗂️ 索引设计最佳实践 2.1 分片数设计 —— 不是越多越好 ES 把一个 Index 的数据切分成多个分片(Shard)分布在不同节点上。每个分片本质上是一个独立的 Lucene 实例——有自己的倒排索引、段文件、内存开销。 ...