随笔 - 3  文章 - 0  评论 - 0  阅读 - 5730

【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,这样就会打印所有的操作记录了。注意:这样的设置仅用于测试!

posted on   OscarKing  阅读(986)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示