elasticsearch虽然是一中搜索引擎技术,对于我们的理解就是数据既然存储到了elasticsearch中,那么他的查询肯定是很快的。但是在实际的使用中,我们还是会发现,经常出现慢查询的情况,那这种情况我们如何排查呢?
分析原因:
线上出现慢查询,主要还是和集群的负载情况,查询语句,服务器性能等相关,我们可以从这几方面入手。
解决思路:
1、通过监控查看下elasticsearch集群的情况,相关联的指标有:CPU负载,索引吞吐量,搜索吞吐量,垃圾回收情况,搜索线程池队列的大小,查看方式是:GET /_cat/thread_pool
2、拆解DSL查询语句,分析慢查询的根源,从以下几个方面入手:没有高亮显示它仍然很慢吗?没有聚合,它仍然很慢吗?如果size设置为0,它仍然很慢吗?
3、使用profile工具进行排查分析,需要把当前的索引开启profile,开启语句是:
GET /test/_search
{
"profile": true,
"query" : {
"match" : { "message" : "some number" }
}
再使用:GET /_nodes/hot_threads
4、开启elasticsearch的ARS,这里备注下,在elasticsearch7.x开始,集群默认开启了ARS,手动开启ARS是:
PUT /_cluster/settings{
"transient":{
"cluster.routing.use_adaptive_replica_selection":true
}}








还没有评论,来说两句吧...