--- title: "Wildcard queries cannot be executed when - 如何解决此 Elasticsearch 异常" date: 2026-01-09 lastmod: 2026-01-09 description: "Elasticsearch 异常解决方案" tags: ["Elasticsearch", "异常处理"] summary: " 版本: 7.7-7.15 简而言之,当在非分词字段上尝试使用通配符查询时,就会出现此错误。Elasticsearch不允许在非分词字段上使用通配符查询,因为它们没有被分词,因此无法使用通配符模式进行搜索。要解决此问题,您可以将字段更改为分词字段,或者使用不需要分词的查询类型,例如term或match查询。或者,如果您仍想执行通配符搜索,可以使用为文本字段自动创建的keyword字段。 日志上下文 日志"[wildcard] queries cannot be executed when ‘“的类名是 StringFieldType.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人使用: boolean shouldNormalize; SearchExecutionContext context ) { failIfNotIndexed(); if (context.allowExpensiveQueries() == false) { throw new ElasticsearchException("[wildcard] queries cannot be executed when '" + ALLOW_EXPENSIVE_QUERIES.getKey() + "' is set to false."); } Term term; if (getTextSearchInfo().getSearchAnalyzer() != null && shouldNormalize) { " --- > **版本:** 7.7-7.15 简而言之,当在非分词字段上尝试使用通配符查询时,就会出现此错误。Elasticsearch不允许在非分词字段上使用通配符查询,因为它们没有被分词,因此无法使用通配符模式进行搜索。要解决此问题,您可以将字段更改为分词字段,或者使用不需要分词的查询类型,例如term或match查询。或者,如果您仍想执行通配符搜索,可以使用为文本字段自动创建的keyword字段。 日志上下文 日志"[wildcard] queries cannot be executed when '"的类名是[StringFieldType.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人使用: ```java boolean shouldNormalize; SearchExecutionContext context ) { failIfNotIndexed(); if (context.allowExpensiveQueries() == false) { throw new ElasticsearchException("[wildcard] queries cannot be executed when '" + ALLOW_EXPENSIVE_QUERIES.getKey() + "' is set to false."); } Term term; if (getTextSearchInfo().getSearchAnalyzer() != null && shouldNormalize) { ```