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

版本: 7.1-8.9

简而言之,当 Elasticsearch 期望 JSON 对象以起始标记(用 ‘{’ 表示)开始,但遇到了不同的标记时,就会发生此错误。这通常发生在 JSON 输入格式不正确或错误的情况下。要解决此问题,您可以:1)检查 JSON 输入是否存在语法错误,确保它以 ‘{’ 开始并以 ‘}’ 结束;2)使用 JSON 验证工具验证 JSON 输入;3)确保在请求头中设置了正确的内容类型;4)如果您使用文件作为输入,确保其格式正确并被正确引用。

日志上下文 #

日志 “expected START_OBJECT as the token but was” 的类名是 IndicesOptions.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考:

Boolean ignoreUnavailable = defaults == null ? null : defaults.ignoreUnavailable();
boolean ignoreThrottled = defaults == null ? false : defaults.ignoreThrottled();
Token token = parser.currentToken() == Token.START_OBJECT ? parser.currentToken() : parser.nextToken();
String currentFieldName = null;
if (token != Token.START_OBJECT) {
    throw new ElasticsearchParseException("expected START_OBJECT as the token but was " + token);
}
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
    if (token == XContentParser.Token.FIELD_NAME) {
        currentFieldName = parser.currentName();
    } else if (token == Token.START_ARRAY) {