API 可以验证一条查询语句是否合法。
以上请求的返回值告诉我们这条语句是非法的:
{
"valid" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
}
}
<1> explain
参数可以提供语句错误的更多详情。
很显然,我们把 query 语句的 match
与字段名位置弄反了:
"valid" : false,
"_shards" : { ... },
"explanations" : [ {
"valid" : false,
"error" : "org.elasticsearch.index.query.QueryParsingException:
[gb] No query registered for [tweet]"
} ]
}
explanation
会为每一个索引返回一段描述,因为每个索引会有不同的映射关系和分析器:
{
"_shards" : { ... },
"explanations" : [ {
"index" : "us",
"valid" : true,
"explanation" : "tweet:really tweet:powerful"
}, {
"valid" : true,
"explanation" : "tweet:really tweet:power"
} ]
从返回的 explanation
你会看到 match
是如何为查询字符串 "really powerful"
进行查询的,
首先,它被拆分成两个独立的词分别在 tweet
字段中进行查询。