--- title: "只能在keyword和text字段上使用通配符查询 - 如何解决此Elasticsearch异常" date: 2026-02-18 lastmod: 2026-02-18 description: "当在不支持通配符查询的字段类型上使用通配符查询时,会出现此错误。Elasticsearch只支持在keyword和text字段上进行通配符查询。本文介绍了解决此问题的方法。" tags: ["通配符查询", "字段类型", "查询异常", "keyword字段", "text字段"] summary: "版本: 6.8-7.8 简而言之,当在不支持通配符查询的字段类型上使用通配符查询时,会出现此错误。Elasticsearch只支持在keyword和text字段上进行通配符查询。要解决此问题,如果可能的话,您可以将字段类型更改为keyword或text,或者使用当前字段类型支持的其他类型查询。另外,您可以为当前字段创建keyword或text子字段,并在该子字段上执行通配符查询。 日志上下文 # 日志"Can only use wildcard queries on keyword and text fields – not on [“的类名是 MappedFieldType.java。 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考: } public Query wildcardQuery(String value; @Nullable MultiTermQuery.RewriteMethod method; QueryShardContext context) { throw new QueryShardException(context; "Can only use wildcard queries on keyword and text fields - not on [" + name + "] which is of type [" + typeName() + "]"); } public Query regexpQuery(String value; int flags; int maxDeterminizedStates; @Nullable MultiTermQuery." --- > **版本:** 6.8-7.8 简而言之,当在不支持通配符查询的字段类型上使用通配符查询时,会出现此错误。Elasticsearch只支持在keyword和text字段上进行通配符查询。要解决此问题,如果可能的话,您可以将字段类型更改为keyword或text,或者使用当前字段类型支持的其他类型查询。另外,您可以为当前字段创建keyword或text子字段,并在该子字段上执行通配符查询。 ## 日志上下文 日志"Can only use wildcard queries on keyword and text 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; QueryShardContext context) { throw new QueryShardException(context; "Can only use wildcard queries on keyword and text fields - not on [" + name + "] which is of type [" + typeName() + "]"); } public Query regexpQuery(String value; int flags; int maxDeterminizedStates; @Nullable MultiTermQuery.RewriteMethod method; QueryShardContext context) { ```