我的部门使用olivere弹性v7.0.26作为ElasticSearch客户端,有时我们的前端系统会返回一些错误消息,例如"Error 400 (坏请求):所有碎片失败的type=search_phase_execution_exception“,但是没有任何其他有用的msg来帮助故障排除,所以我搜索了GitHub关于解析*elastic.Error错误的信息,代码如下:
if err != nil {
log.WithFields(ctx, log.Fields{}).WithError(err).Warn("list query es error")
if ex, ok := err.(*elastic.Error); ok {
log.WithFields(ctx, log.Fields{"query": query, "status": ex.Status, "detail": ex.Details}).WithError(ex).Warnf("list query es err")
}
return res, err
}但奇怪的是,我们的日志系统上打印了“列表查询es错误”,但是下一个日志“列表查询err”没有,我使用了深度分页(大型from+size)检查日志,它工作并打印弹性错误,例如根本原因,这样我就可以得到max_result_window tips..But,它返回一个未解析错误,该错误作为search_phase_execution_exception错误返回,公司代码不允许粘贴到开源网站,我只想知道什么错误可以使elasticsearch返回search_phase_execution_exception和errcode 400?非常感谢您的帮助!
与上面的描述相同,但我需要强调的一点是,问题并不总是发生,所以我可以排除索引映射字段类型错误,例如“text/关键字”,只想得到整个错误/异常elasticsearch可以返回,但是我不能在弹性指南上找到相关的文档,如果你能提供这方面的指导/文档,那就可以了。
发布于 2022-11-25 07:02:55
嗯,这似乎是个笑话XD,我从来没有学过一些故障排除技术,但是在我问了这个问题之后,我意识到我可以得到ElasticSearch服务器日志,所以我询问了我们公司的SRE并得到了日志,这是术语查询超出最大值的错误,原因是我们的RPC接口返回了一个关于零数据编辑键的异常结果,这将是一个很大的关键问题,但是我们找到并修复了它。
https://stackoverflow.com/questions/74543791
复制相似问题