本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义数据来源连接器
如果您的存储库尚未为其提供数据源连接器, Amazon Kendra 请使用自定义数据源。即使您无法使用 Amazon Kendra 数据源同步存储库,也可以使用 Amazon Kendra它来查看数据源提供的相同运行历史指标。使用它可以在 Amazon Kendra 数据源和自定义数据源之间创建一致的同步监控体验。具体而言,使用自定义数据源来查看使用BatchPutDocument和创建的数据源连接器的同步指标BatchDeleteDocument APIs。
要对 Amazon Kendra 数据来源连接器进行故障排除,请参阅数据来源故障排除。
创建自定义数据源时,您可以完全控制要编制索引的文档的选择方式。 Amazon Kendra 仅提供可用于监控数据源同步作业的指标信息。您必须创建并运行用于确定数据来源索引文档的爬网程序。
您必须使用 Document 对象和_source_uri来指定文档的主标题,才能DocumentTitleDocumentURI包含在Query结果的响应中。DocumentAttribute
您可以使用控制台或 CreateDataSourceAPI 为自定义数据源创建标识符。要使用控制台,请为您的数据来源命名,并可选择提供描述和资源标签。创建数据来源后,将显示数据来源 ID。复制此 ID,以便在将数据来源与索引同步时使用。
您还可以使用 CreateDataSource API 创建自定义数据来源。API 会返回一个 ID,供您在同步数据来源时使用。使用 CreateDataSource API 创建自定义数据来源时,无法设置 Configuration、RoleArn 或 Schedule 参数。如果您设置了这些参数,则 Amazon Kendra 会返回ValidationException异常。
要使用自定义数据来源,请创建一个负责更新 Amazon Kendra 索引的应用程序。该应用程序依赖于您创建的爬网程序。爬网程序会读取存储库中的文档并确定应将哪些文档发送到 Amazon Kendra。您的应用程序应执行以下步骤:
-
爬取您的存储库,列出存储库中添加、更新或删除的文档。
-
调用 StartDataSourceSyncJobAPI 以发出同步作业正在启动的信号。您需要提供一个数据源 ID 来标识正在同步的数据源。 Amazon Kendra 返回用于标识特定同步任务的执行 ID。
-
调用 BatchDeleteDocumentAPI 从索引中移除文档。您可以提供数据来源 ID 和执行 ID 来标识正在同步的数据来源以及与此更新关联的作业。
-
调用 StopDataSourceSyncJobAPI 以发出同步任务结束的信号。调用
StopDataSourceSyncJobAPI 后,关联的执行 ID 不再有效。 -
使用索引和数据源标识符调用 ListDataSourceSyncJobsAPI 以列出数据源的同步任务并查看同步作业的指标。
结束同步作业后,您可以开始新的同步作业。可能需要一段时间才能将所有提交的文档添加到索引中。使用 ListDataSourceSyncJobs API 查看同步任务的状态。如果同步作业返回的 Status 为 SYNCING_INDEXING,则某些文档仍在编制索引。当上一个作业的状态为 FAILED 或 SUCCEEDED 时,您可以启动新的同步作业。
调用 StopDataSourceSyncJob API 后,您不能在调用BatchPutDocument或时使用同步任务标识符BatchDeleteDocument APIs。如果您这样做,则提交的所有文档都将在 API 的 FailedDocuments 响应消息中返回。
必需的属性
当您 Amazon Kendra 使用 BatchPutDocument API 向提交文档时,每个文档都需要两个属性来标识其所属的数据源和同步运行。要将自定义数据来源的文档正确映射到 Amazon Kendra 索引,您必须提供以下两个属性:
-
_data_source_id- 数据来源的标识符。当您使用控制台或CreateDataSourceAPI 创建数据来源时,会返回此值。 -
_data_source_sync_job_execution_id- 同步运行的标识符。当您开始与StartDataSourceSyncJobAPI 进行索引同步时,会返回该值。
以下是使用自定义数据来源为文档编制索引所需的 JSON。
{
"Documents": [
{
"Attributes": [
{
"Key": "_data_source_id",
"Value": {
"StringValue": "data source identifier"
}
},
{
"Key": "_data_source_sync_job_execution_id",
"Value": {
"StringValue": "sync job identifier"
}
}
],
"Blob": "document content",
"ContentType": "content type",
"Id": "document identifier",
"Title": "document title"
}
],
"IndexId": "index identifier",
"RoleArn": "IAM role ARN"
}
使用 BatchDeleteDocument API 从索引中移除文档时,需要在 DataSourceSyncJobMetricTarget 参数中指定以下两个字段:
-
DataSourceId- 数据来源的标识符。当您使用控制台或CreateDataSourceAPI 创建数据来源时,会返回此值。 -
DataSourceSyncJobId- 同步运行的标识符。当您开始与StartDataSourceSyncJobAPI 进行索引同步时,会返回该值。
以下是使用 BatchDeleteDocument API 从索引中删除文档所需的 JSON。
{
"DataSourceSyncJobMetricTarget": {
"DataSourceId": "data source identifier",
"DataSourceSyncJobId": "sync job identifier"
},
"DocumentIdList": [
"document identifier"
],
"IndexId": "index identifier"
}
查看 指标
同步任务完成后,您可以使用 DataSourceSyncJobMetricsAPI 获取与同步任务相关的指标。使用它来监控您的自定义数据来源同步。
如果您多次提交同一个文档,无论是作为 BatchPutDocument API、BatchDeleteDocument API 的一部分,还是为添加和删除提交该文档,该文档在指标中仅计入一次。
-
DocumentsAdded- 使用与首次添加到索引中的此同步作业关联的BatchPutDocumentAPI 提交的文档数量。如果在同步中为添加多次提交文档,则该文档在指标中仅计入一次。 -
DocumentsDeleted- 使用与从索引中删除的此同步作业关联的BatchDeleteDocumentAPI 提交的文档数量。如果在同步中为删除多次提交文档,则该文档在指标中仅计入一次。 -
DocumentsFailed- 与该同步作业关联但编制索引失败的文档数量。 Amazon Kendra 已接受为这些文档编制索引,但无法编制索引或已删除。如果文档未被接受 Amazon Kendra,则该文档的标识符将在BatchPutDocument和的 responFailedDocumentsse 属性中返回BatchDeleteDocumentAPIs。 -
DocumentsModified— 使用与此同步作业关联的BatchPutDocumentAPI 提交的已修改文档的数量,这些文档已在 Amazon Kendra 索引中进行了修改。
Amazon Kendra 在为文档编制索引时也会发出 Amazon CloudWatch 指标。有关更多信息,请参阅Amazon Kendra 使用进行监控 Amazon CloudWatch。
Amazon Kendra 不返回自定义数据源的DocumentsScanned指标。它还会 CloudWatch 发出文档中列出的Amazon Kendra 数据源指标。
了解更多
要了解有关 Amazon Kendra 与自定义数据源集成的更多信息,请参阅: