版本: 6.8-8.9
简而言之,当您在Elasticsearch的term查询中尝试使用数组值时会出现此错误,因为term查询不支持数组。Term查询旨在匹配精确值,而不是多个值。要解决此问题,如果您想匹配多个值,可以使用’terms’查询而不是’term’查询。或者,您可以使用’bool’查询,其中包含多个’term’查询,每个查询匹配不同的值。这样,您就可以在Elasticsearch数据中搜索多个精确值。
日志上下文 #
日志"[term] query does not support array of values"的类名是 TermQueryBuilder.java。 我们从Elasticsearch源代码中提取了以下内容,为寻求深入理解的人提供上下文:
} else if (token.isValue()) {
throwParsingExceptionOnMultipleFields(NAME, parser.getTokenLocation(), fieldName, parser.currentName());
fieldName = currentFieldName;
value = maybeConvertToBytesRef(parser.objectBytes());
} else if (token == XContentParser.Token.START_ARRAY) {
throw new ParsingException(parser.getTokenLocation(), "[term] query does not support array of values");
}
} TermQueryBuilder termQuery = new TermQueryBuilder(fieldName, value);
termQuery.boost(boost);





