--- title: "Term查询不支持数组值——如何解决此Elasticsearch异常" date: 2026-03-24 lastmod: 2026-03-24 description: "当您在Elasticsearch的term查询中尝试使用数组值时会出现此错误,因为term查询不支持数组。本文介绍如何使用terms查询或bool查询来解决这个问题。" tags: ["Term查询", "异常处理", "查询语法", "Terms查询"] summary: " 版本: 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); " --- > **版本:** 6.8-8.9 简而言之,当您在Elasticsearch的term查询中尝试使用数组值时会出现此错误,因为term查询不支持数组。Term查询旨在匹配精确值,而不是多个值。要解决此问题,如果您想匹配多个值,可以使用'terms'查询而不是'term'查询。或者,您可以使用'bool'查询,其中包含多个'term'查询,每个查询匹配不同的值。这样,您就可以在Elasticsearch数据中搜索多个精确值。 日志上下文 ----------- 日志"[term] query does not support array of values"的类名是[TermQueryBuilder.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从Elasticsearch源代码中提取了以下内容,为寻求深入理解的人提供上下文: ```java } 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); ```