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 }}
还没有评论,来说两句吧...