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

版本: 6.8-8.9

简而言之,当 Elasticsearch 中 ‘more_like_this’ 查询的 ‘fields’ 参数为空或未指定时,会出现此错误。‘more_like_this’ 查询用于查找与给定文档集"相似"的文档。要解决此问题,请确保提供了 ‘fields’ 参数,并且至少包含一个字段名称。如果不确定使用哪些字段,可以考虑使用 ‘_all’ 来搜索所有字段。或者,你可以设置 ‘like’ 参数来指定要查找相似文档的文本。

日志上下文 #

日志 “more_like_this requires ‘fields’ to be non-empty” 的类名是 MoreLikeThisQueryBuilder.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用:

if (likeTexts.isEmpty() && likeItems.isEmpty()) {
 throw new ParsingException(parser.getTokenLocation(); "more_like_this requires 'like' to be specified");
 }
 if (fields != null && fields.isEmpty()) {
 throw new ParsingException(parser.getTokenLocation(); "more_like_this requires 'fields' to be non-empty");
 }  String[] fieldsArray = fields == null ? null : fields.toArray(new String[fields.size()]);
 String[] likeTextsArray = likeTexts.isEmpty() ? null : likeTexts.toArray(new String[likeTexts.size()]);
 String[] unlikeTextsArray = unlikeTexts.isEmpty() ? null : unlikeTexts.toArray(new String[unlikeTexts.size()]);