查询可以变得非常的复杂,尤其和不同的分析器与不同的字段映射结合时,理解起来就有点困难了。不过 validate-query
API 可以用来验证查询是否合法。
1.不合法的查询(索引不存在):
GET /test/_validate/query?explain
请求体:
{
"query": {
"match": {
"title": "first"
}
}
}
响应体:
{
"error": {
"root_cause": [
{
"type": "index_not_found_exception",
"reason": "no such index [test]",
"resource.type": "index_or_alias",
"resource.id": "test",
"index_uuid": "_na_",
"index": "test"
}
],
"type": "index_not_found_exception",
"reason": "no such index [test]",
"resource.type": "index_or_alias",
"resource.id": "test",
"index_uuid": "_na_",
"index": "test"
},
"status": 404
}
2.合法的查询
GET /website/_validate/query?explain
请求体:
{
"query": {
"match": {
"title": "first"
}
}
}
响应体:
{
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"valid": true,
"explanations": [
{
"index": "website",
"valid": true,
"explanation": "title:first"
}
]
}