首页/数据/NoSQL 速查/慢查询与慢索引日志配置
Elasticsearch89 条

慢查询与慢索引日志配置

慢日志按耗时阈值记录检索与写入请求:可在索引级设置 warn/info/debug/trace 四档阈值;日志输出位置由节点 log4j2 配置决定。

NoSQL 速查数据更新于 2026-10-13

慢日志记录什么

慢日志按耗时阈值把检索与写入请求记录下来:warn、info、debug、trace 四个级别可以分别设阈值,超过阈值的请求就写进对应日志文件。它是判断「哪些查询慢、慢在检索阶段还是取数阶段」最直接的数据来源,日志输出位置由节点的 log4j2 配置决定。

基本信息

索引级设置index.search.slowlog.threshold.query.*、index.search.slowlog.threshold.fetch.*、index.indexing.slowlog.threshold.index.*
级别warn / info / debug / trace 四档,可分别设置阈值
默认值阈值默认为 -1 表示关闭,开启时显式写时长,如 5s
日志输出由 config/log4j2.properties 中的 logger 与文件名决定
记录内容查询主体、query 与 fetch 阶段耗时、索引与分片信息

典型使用场景

  • 定位慢查询:找出超过阈值的检索请求并查看它的 DSL
  • 判断瓶颈在检索阶段还是取数阶段:对比 query 与 fetch 两段耗时
  • 排查写入变慢:用 indexing 慢日志看哪类文档写入耗时长
  • 优化前后对比:开启慢日志验证改造是否真的生效
  • 为容量评估提供依据:统计慢请求的比例与分布

开启与配置

开启与配置
# 打开慢日志:查询阶段 5 秒、取数阶段 1 秒以上就记录
PUT /my-index/_settings
{ "index": {
    "search.slowlog.threshold.query.warn": "10s",
    "search.slowlog.threshold.query.info": "5s",
    "search.slowlog.threshold.fetch.warn": "1s",
    "indexing.slowlog.threshold.index.info": "5s"
} }

# 查看当前设置与默认值
GET /my-index/_settings?include_defaults=true&flat_settings=true

# 用索引模板统一开启,新建索引自动生效
PUT /_index_template/slowlog-template
{ "index_patterns": ["logs-*"], "template": { "settings": {
    "index.search.slowlog.threshold.query.info": "5s",
    "index.indexing.slowlog.threshold.index.info": "5s" } } }

# 日志落盘位置在节点侧:config/log4j2.properties 中 slowlog 对应的 appender

阈值与用途

设置项记录对象用途
threshold.query.*检索阶段的耗时判断查询条件与索引设计是否有问题
threshold.fetch.*取回文档阶段的耗时判断是否返回了过多字段
threshold.index.*单次写入的耗时定位写入慢的文档类型
slowlog.level记录到哪个级别的事件级别越细日志越多,也越容易淹没
慢日志同时记录 query 与 fetch 两段耗时,只看总耗时会误判瓶颈:query 高说明检索条件或索引设计有问题,fetch 高说明返回字段过多或 _source 过大。
排查慢查询时把慢日志与网关访问日志按时间与索引名关联,才能定位到具体是哪个业务或调用方在反复触发;只知道哪条 DSL 慢,往往改不动真正的问题源头。

易错点

  • 只改阈值不改 log4j2,日志不会落到预期文件,排查前先确认日志目录里确实生成了对应文件
  • 阈值设得过低(例如 100ms),日志量暴涨反而拖慢节点,真正的问题被淹没
  • search 慢日志分成 query 与 fetch 两段,只看总耗时无法判断瓶颈位置,容易优化错方向
  • 用索引模板长期开启慢日志却没有轮转与保留策略,日志文件最终吃满节点磁盘

数据来源与参考

  • Elasticsearch Guide: Slow log
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌