--- title: "当启用文档级安全时无法对搜索请求进行性能分析 – 如何解决此Elasticsearch异常" date: 2026-02-13 lastmod: 2026-02-13 description: "当启用文档级安全时尝试对搜索请求进行性能分析会导致Elasticsearch异常。本文介绍该错误的成因及解决方案。" tags: ["文档级安全", "性能分析", "搜索请求", "安全异常", "Elasticsearch安全"] summary: "版本: 6.8-7.15 简而言之,当用户尝试在启用文档级安全的情况下对搜索请求进行性能分析时,就会出现此错误。文档级安全限制了对索引中某些文档的访问,而对此类请求进行性能分析可能会导致安全问题。 要解决此问题,您可以禁用搜索请求的性能分析功能,或者在不需要时禁用文档级安全。但请注意,禁用文档级安全可能会将敏感数据暴露给未经授权的用户。在进行更改之前,务必考虑安全影响。 日志上下文 # 日志 “A search request cannot be profiled if document level security” 的类名是 SearchRequestInterceptor.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: 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 简而言之,当用户尝试在启用文档级安全的情况下对搜索请求进行性能分析时,就会出现此错误。文档级安全限制了对索引中某些文档的访问,而对此类请求进行性能分析可能会导致安全问题。 要解决此问题,您可以禁用搜索请求的性能分析功能,或者在不需要时禁用文档级安全。但请注意,禁用文档级安全可能会将敏感数据暴露给未经授权的用户。在进行更改之前,务必考虑安全影响。 ## 日志上下文 日志 "A search request cannot be profiled if document level security" 的类名是 [SearchRequestInterceptor.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入了解上下文的人参考: ```java 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 { listener.onResponse(null); } } else { ```