记录一次ES异常慢查询(setExplain)

一.问题背景

有个用户在使用ES发现,通过Kibana查询ES数据很快,但是使用java (Spring data tmpleES)去查询时候同样的语句需要12s才能返回数据。

二.排查路径

1.确认现象 Kibana快,ES查询慢

2.定位问题来自JAVA ES查询。确认api用法是否正常

3.查看配置是否正常

执行时候非常慢,看着查询也可以问题。但是等等查询中有个配置参数setExplain(true)?执行计划吗?

三.setExplain(true)

Elasticsearch 的 explain API 允许你深入了解为什么某个文档与查询匹配,或者为什么某个文档的得分是如何计算的。当你在搜索中设置了 setExplain(true) ,Elasticsearch 将返回每个匹配文档的解释,解释了该文档与查询的匹配程度以及得分的计算方式

  • 我们看看效果:
json 复制代码
{
  "_id": "document_id_123",
  "_score": 5.678,
  "_explanation": {
    "value": 5.678,
    "description": "sum of:",
    "details": [
      {
        "value": 2.34,
        "description": "termFreq=2.34",
        "details": []
      },
      {
        "value": 3.34,
        "description": "weight(field:title in document) [default]",
        "details": []
      }
    ]
  }
}

看到了吗 explanation 中详细解释了 "_score": 5.678 的得分细节。

四.会带来什么影响

通常情况下,开启 explain 是为了调试查询或者理解查询结果的产生过程。但是需要注意的是,开启 explain 可能会增加查询的开销,特别是在大型索引中或者查询结果集很大的情况下。因此,建议在开发和调试阶段使用,而不要在生产环境中持续开启。

所以去除这个参数后:

相关推荐
Java爱好狂.2 小时前
挑战一周速通Spring+SpringBoot+SpringCloud!
java·后端·spring·springboot·架构师·java面试·java程序员
柠檬味拥抱3 小时前
基于 YOLO11 的 18 类户外生活垃圾智能检测系统:从模型到 Streamlit 全流程实战
后端
得物技术3 小时前
动态规则的 Agent 实践:用确定性工程驾驭 LLM 的资产智能验收
人工智能·后端·llm
柠檬味拥抱3 小时前
基于 YOLO11 的低空空域反无人机预警系统:红外热成像 + Streamlit 全流程实战
后端
付威20233 小时前
rpi-acp 源码解读:以 Zed 为例,一个 ACP Client 如何启动并驱动 rpi Agent
后端
我的xiaodoujiao3 小时前
Django 基础知识详细图文教程 15-Django 内置Admin系统
后端·python·django
柠檬味拥抱3 小时前
皮肤病变检测数据集 | 2500张YOLO皮肤科数据集
后端
我的xiaodoujiao3 小时前
Django 基础知识详细图文教程 16-Django 内置Admin认证系统
后端·python·django
程序员鱼皮3 小时前
Personal Agent 是什么?为什么大厂都抢着做?连 DeepSeek Bot 都来了。。
前端·后端·ai编程
geovindu3 小时前
rust: Chain of Responsibility Pattern
开发语言·后端·设计模式·rust·责任链模式·行为模式