Elasticsearch使用建议 验证查询是否合法 查询在和不同的分析器与不同的字段映射相结合时,会比较难理解,可以用validatequery API来验证查询是否合法。 示例:在Kibana的Console界面中,执行如下命令。validate请求会告诉您这个查询不合法。 7.x之前版本 GET /gb/tweet/validate/query { "query": { "tweet" : { "match" : "really powerful" } } } 7.x之后版本 GET /gb/tweet/validate/query { "query": { "productName" : { "match" : "really powerful" } } } 为了找出查询不合法的原因,可以把explain参数加到查询字符串中,执行如下命令。 7.x之前版本 GET /gb/tweet/validate/query?explain { "query": { "tweet" : { "match" : "really powerful" } } } 7.x之后版本 GET /gb/tweet/validate/query?explain { "query": { "productName" : { "match" : "really powerful" } } } 返回结果如下所示,可以从返回结果看出查询类型(match)与字段名称(tweet)搞混了。 { "valid": false, "error": "org.elasticsearch.common.ParsingException: no [query] registered for [tweet]" } 因此,对于合法查询,使用explain参数将返回可读的描述,这对准确理解云搜索服务是如何解析query是非常有帮助的。