故障排除
SQL 插件是无状态的,因此故障排除主要集中在对特定查询失败原因的排查上。
最常见的错误是令人头疼的空指针异常,这可能在解析错误或使用错误的 HTTP 方法(POST 与 GET,反之亦然)时发生。POST 方法和 HTTP 请求体可以提供最一致的结果:
POST _plugins/_sql
{
"query": "SELECT * FROM my-index WHERE ['name.firstname']='saanvi' LIMIT 5"
}
如果查询行为不符合预期,可以使用 _explain API 查看翻译后的查询,然后进行排查。对于大多数操作,_explain 会返回 UDB-SX 查询 DSL。而对于 UNION、MINUS 和 JOIN 操作,它会返回更类似于 SQL 执行计划的内容。
示例请求
POST _plugins/_sql/_explain
{
"query": "SELECT * FROM my-index LIMIT 50"
}
示例响应
{
"from": 0,
"size": 50
}
索引映射验证异常
如果看到以下验证异常,请确保查询中的索引不是索引模式,并且没有多种类型:
{
"error": {
"reason": "There was internal problem at backend",
"details": "When using multiple indices, the mappings must be identical.",
"type": "VerificationException"
},
"status": 503
}