如何在AWS Kendra Query结果中获取_document_body属性?
AWS Kendra查询未返回_document_body的解决建议
以下是几个排查和解决方向:
检查数据源同步配置
确认你的数据源在同步时开启了文档内容的存储:- 对于托管数据源(如S3、SharePoint),需要在数据源配置中明确设置保留原始文档内容,否则Kendra不会存储
_document_body属性。 - 对于自定义数据源,调用
BatchPutDocument时必须正确传入Content字段,并指定合适的ContentType(如TEXT_PLAIN、HTML),否则文档内容不会被索引存储。
- 对于托管数据源(如S3、SharePoint),需要在数据源配置中明确设置保留原始文档内容,否则Kendra不会存储
验证索引的文档属性与权限设置
- 登录Kendra控制台,进入目标索引的「文档属性」页面,确认
_document_body属于可返回的系统属性(默认允许,但若被修改则需调整)。 - 检查索引的访问控制规则或文档级权限,确保没有限制
_document_body属性的读取权限。
- 登录Kendra控制台,进入目标索引的「文档属性」页面,确认
核对查询参数细节
- 确认
RequestedDocumentAttributes中的_document_body拼写完全正确(注意是英文下划线,大小写敏感)。 - 若查询使用了
AttributeFilter,排查过滤器是否间接排除了包含_document_body的文档。
- 确认
用BatchGetDocument验证单文档属性
调用BatchGetDocumentAPI查询单个目标文档的属性,若该API也返回空的_document_body,说明文档本身未被正确索引内容,需要重新同步数据源。
你的代码写法本身没有问题,示例如下:
const command = new QueryCommand({ IndexId: 'xxxxxxx', QueryText: "How to connect to ec2?", RequestedDocumentAttributes: [ "_document_body", "_data_source_id", "_last_updated_at" ] });
额外注意:确保调用API的IAM角色拥有kendra:Query权限,以及访问该索引下文档的权限。
内容的提问来源于stack exchange,提问作者Andrea Pinti
相关产品推荐
相关产品推荐

