--- title: "只能在 keyword、text 和 wildcard 字段上使用通配符查询 – 不能在 – 如何解决此 Elasticsearch 异常" date: 2026-01-15 lastmod: 2026-01-15 description: "当在 Elasticsearch 中对非 keyword、text 或 wildcard 类型的字段使用通配符查询时,会出现此错误。本文介绍如何解决该异常。" tags: ["Elasticsearch", "通配符查询", "字段类型", "查询异常", "错误解决"] summary: "版本: 7.9-7.15 简要来说,当在 Elasticsearch 中对非 keyword、text 或 wildcard 类型的字段使用通配符查询时,会出现此错误。Elasticsearch 仅在这些类型的字段上支持通配符查询。要解决此问题,您可以将字段类型更改为 keyword、text 或 wildcard,或者使用当前字段类型支持的其他类型的查询。另一种解决方案是创建一个 keyword 类型的多字段(multi-field),并在这个新字段上使用通配符查询。 日志上下文 # 日志 “Can only use wildcard queries on keyword; text and wildcard fields – not on [” 的类名是 MappedFieldType.java。我们从 Elasticsearch 源代码中提取了以下内容,以供那些寻求深入上下文的人参考: } public Query wildcardQuery(String value; @Nullable MultiTermQuery.RewriteMethod method; boolean caseInsensitve; SearchExecutionContext context) { throw new QueryShardException(context; "Can only use wildcard queries on keyword; text and wildcard fields - not on [" + name + "] which is of type [" + typeName() + "]"); } public Query normalizedWildcardQuery(String value; @Nullable MultiTermQuery." --- > **版本:** 7.9-7.15 简要来说,当在 Elasticsearch 中对非 keyword、text 或 wildcard 类型的字段使用通配符查询时,会出现此错误。Elasticsearch 仅在这些类型的字段上支持通配符查询。要解决此问题,您可以将字段类型更改为 keyword、text 或 wildcard,或者使用当前字段类型支持的其他类型的查询。另一种解决方案是创建一个 keyword 类型的多字段(multi-field),并在这个新字段上使用通配符查询。 ## 日志上下文 日志 "Can only use wildcard queries on keyword; text and wildcard fields – not on [" 的类名是 [MappedFieldType.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从 Elasticsearch 源代码中提取了以下内容,以供那些寻求深入上下文的人参考: ```java } public Query wildcardQuery(String value; @Nullable MultiTermQuery.RewriteMethod method; boolean caseInsensitve; SearchExecutionContext context) { throw new QueryShardException(context; "Can only use wildcard queries on keyword; text and wildcard fields - not on [" + name + "] which is of type [" + typeName() + "]"); } public Query normalizedWildcardQuery(String value; @Nullable MultiTermQuery.RewriteMethod method; SearchExecutionContext context) { throw new QueryShardException(context; "Can only use wildcard queries on keyword; text and wildcard fields - not on [" + name ```