【elasticsearch】elasticSearch数据库配置慢查询日志
给elasticSearch引擎配置慢查询日志,可以实时监控搜索过慢的日志。虽然ElasticSearch以快速搜索而出名,但随着数据量的进一步增大或是服务器的一些性能问题,会有可能出现慢查询的情况。慢查询日志可以帮助你快速定位到是什么 Index 和 语句 过慢。甚至还可以用 Opster Search Log Analyzer 分析你的慢查询日志,Opster Search Log Analyzer 还会针对你的慢查询日志提供专门的优化建议。
默认情况下,慢查询日志打印功能是关闭的。你可以通过设置查询的threshold 值来设置,通过如下的命令查看当前设置的值。下面以mytask索引为例:
1 | curl -XGET "http://<your elastic host>:9200/mytask/_settings?pretty" |
上面查询了mytask当前设置的值,如果你想输出所有索引的设置信息,那么只需要将 mytask 改为 _al l就可以了 /_all/_settings 。
如果输出的信息中,如果没有threadhold值那么就还没有进行设置。需要分别设置 搜索部分 和 索引部分 两部分。
1、搜索部分:
1 2 3 4 5 6 7 8 9 10 11 12 | curl -XPUT "http://<your elastic host>:9200/mytask/_settings" -H 'Content-Type: application/json' -d' { "index.search.slowlog.threshold.query.warn" : "10s" , "index.search.slowlog.threshold.query.info" : "5s" , "index.search.slowlog.threshold.query.debug" : "2s" , "index.search.slowlog.threshold.query.trace" : "500ms" , "index.search.slowlog.threshold.fetch.warn" : "1s" , "index.search.slowlog.threshold.fetch.info" : "800ms" , "index.search.slowlog.threshold.fetch.debug" : "500ms" , "index.search.slowlog.threshold.fetch.trace" : "200ms" , "index.search.slowlog.level" : "info" }' |
上面给Elastic Search搜索(Search)设置了慢查询日志输出分界线为info级。上面有设置 query 和 fetch 两部分,query表示获取文档(Documents)的时间,fetch表示获取实际数据源(Source)的时间。
2、索引部分
1 2 3 4 5 6 7 8 9 | curl -XPUT "http://<your elastic host>:9200/mytask/_settings" -H 'Content-Type: application/json' -d' { "index.indexing.slowlog.threshold.index.warn" : "10s" , "index.indexing.slowlog.threshold.index.info" : "5s" , "index.indexing.slowlog.threshold.index.debug" : "2s" , "index.indexing.slowlog.threshold.index.trace" : "500ms" , "index.indexing.slowlog.level" : "info" , "index.indexing.slowlog.source" : "1000" }' |
上面给Elastic Search索引(Indexing)设置了慢查询日志输出的分界线为info级,并且每条数据最多输出源数据(Source)的前1000个字符。
然后你可以再通过命令 mytask/_settings来检查设置是否生效。如果设置没有问题了,那么你接下来就可以在日志目录中观察到你的慢日志文件了。
获取日志输出目录
1 | curl -XGET "http://<your elatic host>:9200/_nodes/settings?pretty=true" |
在settings.path.logs下找到打印日志的目录。默认情况,慢日志文件名格式为:
1 2 | <cluster_name>_index_search_slowlog.log <cluster_name>_index_indexing_slowlog.log |
由于ElasticSearch的处理速度非常的快,所以很有可能没有慢查询的日志。你可以通过如下的操作,将所有的查询和索引都记录到日志中。
1 2 3 4 5 6 7 8 | curl -XPUT "http://<your elatic host>:9200/task/_settings" -H 'Content-Type: application/json' -d' { "index.search.slowlog.threshold.query.trace" : "0ms" , "index.search.slowlog.threshold.fetch.trace" : "0ms" , "index.search.slowlog.level" : "trace" , "index.indexing.slowlog.threshold.index.trace" : "0ms" , "index.indexing.slowlog.level" : "trace" }' |
上面将打印日志的级别设置为trace, 并且将trace的相应的时间设置为0ms,这样就会打印所有的操作记录了。注意:这样的设置仅用于测试!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏