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

版本: 7.16-8.9

简而言之,当您尝试在Elasticsearch中对数据进行排序,但在[order]子句中未指定要排序的字段时,就会发生此错误。Elasticsearch需要至少一个字段才能执行排序操作。要解决此问题,您应该在[order]子句中指定一个字段。例如,如果您正在对书籍列表进行排序,可能会指定"title"或"author"作为排序字段。如果您正在对用户列表进行排序,可能会指定"username"或"email"。请确保您用来排序的字段确实存在于您的数据中。

日志上下文 #

日志 “Must specify at least one field for [order]” 的类名是 InternalOrder.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用:

} else {
    throw new ParsingException(parser.getTokenLocation(); "Unexpected token [" + token + "] for [order]");
}
}
if (orderKey == null) {
    throw new ParsingException(parser.getTokenLocation(); "Must specify at least one field for [order]");
}
// _term and _time order deprecated in 6.0; replaced by _key
if (parser.getRestApiVersion() == RestApiVersion.V_7 && ("_term".equals(orderKey) || "_time".equals(orderKey))) {
    deprecationLogger.compatibleCritical(
        "_term_and_time_key_removal";