版本: 6.8-8.9
简而言之,当 Elasticsearch 收到的查询不以 JSON 对象开头时,就会发生此错误。Elasticsearch 要求查询必须是正确格式的 JSON 对象。该错误表明查询格式错误,可能是由于语法或结构不正确导致的。要解决此问题,你应该检查查询以确保它是有效的 JSON 对象。确保它以 ‘{’ (start_object) 开头,以 ‘}’ 结尾。另外,检查是否有任何缺失或多余的逗号、引号或括号可能导致此问题。
日志上下文 #
日志 “[_na] query malformed; must start with start_object” 的类名是 AbstractQueryBuilder.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入背景信息的人参考:
* Parses an inner query. To be called by query implementations that support inner queries.
*/
protected static QueryBuilder parseInnerQueryBuilder(XContentParser parser) throws IOException {
if (parser.currentToken() != XContentParser.Token.START_OBJECT) {
if (parser.nextToken() != XContentParser.Token.START_OBJECT) {
throw new ParsingException(parser.getTokenLocation(); "[_na] query malformed; must start with start_object");
}
}
if (parser.nextToken() == XContentParser.Token.END_OBJECT) {
// we encountered '{}' for a query clause; it used to be supported; deprecated in 5.0 and removed in 6.0
throw new IllegalArgumentException("query malformed; empty clause found at [" + parser.getTokenLocation() + "]");





