--- title: "正则表达式查询 - 如何解决此 Elasticsearch 异常" date: 2026-01-03 lastmod: 2026-01-03 description: "此错误发生在 Elasticsearch 的正则表达式查询中使用的正则表达式存在问题时。可能由于无效或不支持的正则表达式模式导致。" tags: ["正则表达式", "查询异常", "错误解决"] summary: " 版本: 8.3-8.9 简而言之,当 Elasticsearch 中的正则表达式查询使用的正则表达式存在问题时,会发生此错误。问题可能是由于无效或不支持的正则表达式模式导致的。要解决此问题,请确保正则表达式模式有效且受 Elasticsearch 支持。另外,检查您查询的字段是否为 ‘text’ 或 ‘keyword’ 类型。如果字段不是这些类型,请考虑更改其映射或使用不同的查询。最后,确保正则表达式不超过 Elasticsearch 中设置的 max_determinized_states 限制。 日志上下文 # 日志 “regexp query” 类名是 PlaceHolderFieldMapper.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入了解上下文的人使用: int matchFlags; int maxDeterminizedStates; @Nullable MultiTermQuery.RewriteMethod method; SearchExecutionContext context ) { throw new QueryShardException(context; fail("regexp query")); } @Override public Query phraseQuery(TokenStream stream; int slop; boolean enablePositionIncrements; SearchExecutionContext context) { throw new QueryShardException(context; fail("phrase query")); " --- > **版本:** 8.3-8.9 简而言之,当 Elasticsearch 中的正则表达式查询使用的正则表达式存在问题时,会发生此错误。问题可能是由于无效或不支持的正则表达式模式导致的。要解决此问题,请确保正则表达式模式有效且受 Elasticsearch 支持。另外,检查您查询的字段是否为 'text' 或 'keyword' 类型。如果字段不是这些类型,请考虑更改其映射或使用不同的查询。最后,确保正则表达式不超过 Elasticsearch 中设置的 max_determinized_states 限制。 日志上下文 ----------- 日志 "regexp query" 类名是 [PlaceHolderFieldMapper.java.](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入了解上下文的人使用: ```java int matchFlags; int maxDeterminizedStates; @Nullable MultiTermQuery.RewriteMethod method; SearchExecutionContext context ) { throw new QueryShardException(context; fail("regexp query")); } @Override public Query phraseQuery(TokenStream stream; int slop; boolean enablePositionIncrements; SearchExecutionContext context) { throw new QueryShardException(context; fail("phrase query")); ```