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

版本: 6.8-7.15

简要来说,当 Elasticsearch 无法解析为监视器(watch)指定的条件时,就会出现此错误。这可能是由于语法不正确、参数缺失或参数无效造成的。要解决此问题,您应该首先验证条件的语法。确保所有必需的参数都已包含且格式正确。如果错误仍然存在,请检查 Elasticsearch 日志以获取有关解析错误的更详细信息。如果监视器插件已过时或损坏,您可能还需要更新或重新安装该插件。

日志上下文 #

日志 “could not parse [{}] condition for watch [{}].” 的类名是 ArrayCompareCondition.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考:

if (token == XContentParser.Token.FIELD_NAME) {
    if (parser.currentName().equals("value")) {
        token = parser.nextToken();
        if (op.supportsStructures() == false && token.isValue() == false
            && token != XContentParser.Token.VALUE_NULL) {
            throw new ElasticsearchParseException("could not parse [{}] condition for watch [{}]. " +
                "compared value for [{}] with operation [{}] must either be a numeric, string, " +
                "boolean or null value, but found [{}] instead", TYPE, watchId, path,
                op.name().toLowerCase(Locale.ROOT), token);
        }
        value = XContentUtils.readValue(parser, token);