Elasticsearch(ES)查询调优是一个系统工程,通常可以从索引设计、映射与分词、查询语句、DSL 写法、缓存与集群配置等多个层面入手。下面按“由浅入深、实战优先”的方式总结常见调优方法。
logs-2025-01、logs-2025-02)"字段名": {
"type": "keyword",
"index": false
}
doc_values: falsekeyword 而不是 text 做精确匹配_source 存储过大"_source": {
"excludes": ["大字段"]
}
keywordik_max_word vs ik_smartik_smart,索引用 ik_max_wordnorms(不需要评分时)"type": "text",
"norms": false
"_source": ["id", "title"]
filter 而不是 mustfilter 可缓存,不计算评分{
"query": {
"bool": {
"filter": [
{ "term": { "status": 1 } }
]
}
}
}
wildcard / prefix 很慢terms 代替多个 term{ "terms": { "id": [1,2,3] } }
size 和 fromsearch_after 替代 from+size"search_after": [上次排序值]
filter 聚合减少数据量composite 聚合做深聚合text 字段直接聚合filter 上下文会被缓存"index.requests.cache.enable": true
preference 稳定路由?preference=_session_id
search 线程池监控GET /index/_search
{
"profile": true,
"query": { ... }
}
"index.search.slowlog.threshold.query.warn": "1s"
GET /index/_explain/1
{
"query": { ... }
}
| 问题 | 优化方式 |
|---|---|
| 深分页慢 | search_after |
| 聚合慢 | filter + doc_values |
| 全字段搜索慢 | 明确字段 + keyword |
| 模糊查询慢 | 避免 wildcard |
| 返回大 | 精简 _source |
如果你有具体场景(如日志检索、商品搜索、聚合分析、亿级数据),我可以给出针对性调优方案或 DSL 示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。