--- title: "模糊查询无法执行时 - 如何解决此 Elasticsearch 异常" date: 2026-01-05 lastmod: 2026-01-05 description: "当 Elasticsearch 中尝试执行 'fuzzy' 查询时,如果 'fuzziness' 参数未正确设置或被禁用,则会发生此错误。" tags: ["模糊查询", "查询异常", "Elasticsearch配置"] summary: "版本: 7.7-7.15 简而言之,当在 Elasticsearch 上尝试执行 ‘fuzzy’ 查询,而 ‘fuzziness’ 参数未正确设置或被禁用时,会出现此错误。模糊查询允许进行近似搜索,但它们需要特定的配置。要解决此问题,您可以在 Elasticsearch 设置中启用 ‘fuzziness’ 参数,或者如果不必要,修改查询以不使用 ‘fuzzy’。此外,确保您查询的字段支持 ‘fuzzy’ 查询,因为并非所有字段类型都支持。 日志上下文 # 日志 “[fuzzy] queries cannot be executed when ‘” 的类名是 StringFieldType.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用: @Override public Query fuzzyQuery(Object value; Fuzziness fuzziness; int prefixLength; int maxExpansions; boolean transpositions; SearchExecutionContext context) { if (context.allowExpensiveQueries() == false) { throw new ElasticsearchException("[fuzzy] queries cannot be executed when '" + ALLOW_EXPENSIVE_QUERIES.getKey() + "' is set to false." --- > **版本:** 7.7-7.15 简而言之,当在 Elasticsearch 上尝试执行 'fuzzy' 查询,而 'fuzziness' 参数未正确设置或被禁用时,会出现此错误。模糊查询允许进行近似搜索,但它们需要特定的配置。要解决此问题,您可以在 Elasticsearch 设置中启用 'fuzziness' 参数,或者如果不必要,修改查询以不使用 'fuzzy'。此外,确保您查询的字段支持 'fuzzy' 查询,因为并非所有字段类型都支持。 日志上下文 ----------- 日志 "[fuzzy] queries cannot be executed when '" 的类名是 [StringFieldType.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用: ```java @Override public Query fuzzyQuery(Object value; Fuzziness fuzziness; int prefixLength; int maxExpansions; boolean transpositions; SearchExecutionContext context) { if (context.allowExpensiveQueries() == false) { throw new ElasticsearchException("[fuzzy] queries cannot be executed when '" + ALLOW_EXPENSIVE_QUERIES.getKey() + "' is set to false."); } failIfNotIndexed(); return new FuzzyQuery(new Term(name(); indexedValueForSearch(value)); fuzziness.asDistance(BytesRefs.toString(value)); prefixLength; maxExpansions; transpositions); ```