📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 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() + "]");