版本: 6.8-8.9
简要来说,当Elasticsearch查询中的source字段包含空对象{}时,会发生此错误。Elasticsearch期望在source字段中有具体的字段或通配符,而不是空对象。要解决此问题,您可以从source字段中删除空对象,或者将其替换为要检索的具体字段。或者,如果要检索所有字段,可以在source字段中使用通配符(*)。
日志上下文 #
日志 “source definition may not contain [{}]” 的类名是 MultiGetRequest.java. 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考:
if ("includes".equals(currentFieldName) || "include".equals(currentFieldName)) {
currentList = includes != null ? includes : (includes = new ArrayList<>(2));
} else if ("excludes".equals(currentFieldName) || "exclude".equals(currentFieldName)) {
currentList = excludes != null ? excludes : (excludes = new ArrayList<>(2));
} else {
throw new ElasticsearchParseException("source definition may not contain [{}]"; parser.text());
}
} else if (token == Token.START_ARRAY) {
while ((token = parser.nextToken()) != Token.END_ARRAY) {
currentList.add(parser.text());
}





