--- title: "文档级安全启用时Suggest功能不支持——如何解决此Elasticsearch异常" date: 2026-02-21 lastmod: 2026-02-21 description: "当启用文档级安全时尝试使用Elasticsearch的suggest功能会出现的错误及其解决方案" tags: ["文档级安全", "Suggest功能", "异常处理"] summary: "版本: 6.8-7.15 简而言之,当您在启用文档级安全的情况下尝试使用Elasticsearch的"suggest"功能时,就会发生此错误。文档级安全限制了对索引中某些文档的访问。“suggest"功能不支持这种级别的安全控制,因此会出现错误。 要解决此问题,如果文档级安全不是必需的,您可以禁用它,或者避免使用"suggest"功能。另外,您可以在应用程序层面实现自己的建议逻辑,从而绕过对Elasticsearch"suggest"功能的需求。 日志上下文 # 日志"Suggest isn’t supported if document level security is enabled"的类名是 SearchRequestInterceptor.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: final SearchSourceBuilder source = request.source(); if (indexAccessControlByIndex.values().stream().anyMatch(iac -> iac.getDocumentPermissions().hasDocumentLevelPermissions())) { if (source != null && source.suggest() != null) { listener.onFailure(new ElasticsearchSecurityException("Suggest isn't supported if document level security is enabled"; RestStatus.BAD_REQUEST)); } else if (source != null && source.profile()) { listener.onFailure(new ElasticsearchSecurityException("A search request cannot be profiled if document level security " + "is enabled"; RestStatus." --- > **版本:** 6.8-7.15 简而言之,当您在启用文档级安全的情况下尝试使用Elasticsearch的"suggest"功能时,就会发生此错误。文档级安全限制了对索引中某些文档的访问。"suggest"功能不支持这种级别的安全控制,因此会出现错误。 要解决此问题,如果文档级安全不是必需的,您可以禁用它,或者避免使用"suggest"功能。另外,您可以在应用程序层面实现自己的建议逻辑,从而绕过对Elasticsearch"suggest"功能的需求。 ## 日志上下文 日志"Suggest isn't supported if document level security is enabled"的类名是[SearchRequestInterceptor.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: ```java final SearchSourceBuilder source = request.source(); if (indexAccessControlByIndex.values().stream().anyMatch(iac -> iac.getDocumentPermissions().hasDocumentLevelPermissions())) { if (source != null && source.suggest() != null) { listener.onFailure(new ElasticsearchSecurityException("Suggest isn't supported if document level security is enabled"; RestStatus.BAD_REQUEST)); } else if (source != null && source.profile()) { listener.onFailure(new ElasticsearchSecurityException("A search request cannot be profiled if document level security " + "is enabled"; RestStatus.BAD_REQUEST)); } else { ```