版本: 7.16-7.17
简而言之,当More Like This (MLT)查询中的"fields"参数未格式化为数组时,会发生此错误。Elasticsearch要求"fields"参数必须是数组格式,即使其中只包含一个项。要解决此问题,请确保"fields"参数格式化为数组。例如,不要使用"fields": “field1”,而要使用"fields": [“field1”]。如果有多个字段,请在数组内用逗号分隔它们,例如"fields": [“field1”, “field2”]。
日志上下文 #
日志"failed to parse More Like This item. field [fields] must be an array"的类名是 MoreLikeThisQueryBuilder.java。 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人使用:
while (parser.nextToken() != XContentParser.Token.END_ARRAY) {
fields.add(parser.text());
}
item.fields(fields.toArray(new String[fields.size()]));
} else {
throw new ElasticsearchParseException("failed to parse More Like This item. field [fields] must be an array");
}
} else if (PER_FIELD_ANALYZER.match(currentFieldName; parser.getDeprecationHandler())) {
item.perFieldAnalyzer(TermVectorsRequest.readPerFieldAnalyzer(parser.map()));
} else if (ROUTING.match(currentFieldName; parser.getDeprecationHandler())) {
item.routing = parser.text();





