搜索性能优化
本章定位:搜索是 Elasticsearch 的核心场景。理解 Filter Cache、查询结构、聚合优化等关键手段,将搜索延迟从秒级降至毫秒级。
定义与作用
搜索性能优化通过调整查询结构、利用缓存、优化字段配置,降低搜索响应时间(Latency)并提升吞吐量(QPS)。
完整示例:飞翔科技的搜索加速
Filter Cache 利用
# ✓ 精确筛选放 filter,利用缓存
POST /students/_search
{
"query": {
"bool": {
"filter": [
{ "term": { "province": "广东" } },
{ "term": { "status": "active" } }
],
"must": [
{ "match": { "major": "计算机科学" } }
]
}
}
}
字段级优化
| 优化项 | 配置 | 节省 | 适用场景 |
|---|---|---|---|
norms: false | 关闭 BM25 评分归一化 | ~1 byte/doc | 纯过滤字段 |
index: false | 不建倒排索引 | 大幅节省 | 不搜索但需返回/排序的字段 |
index_options: docs | 只存文档 ID | ~50% 倒排 | 只需存在性判断 |
doc_values: false | 不建列存 | ~字段大小 | 不需排序/聚合/脚本访问 |
Profile API 诊断
POST /courses/_search
{ "profile": true, "query": { "match": { "title": "机器学习" } } }
小结
搜索优化七方向:filter 替代 must 利用缓存、字段级按需配置、分页用 search_after、_source filtering、Profile API 定位瓶颈、避免 wildcard 左模糊、聚合用 execution_hint。