自定义数据来源连接器 - Amazon Kendra

自定义数据来源连接器

如果 Amazon Kendra 没有为您的存储库提供数据来源连接器,请使用自定义数据来源。即使您无法使用 Amazon Kendra 数据来源同步存储库,也可以使用 Amazon Kendra 来查看数据来源提供的相同运行历史指标。使用它可以在 Amazon Kendra 数据来源和自定义数据来源之间创建一致的同步监控体验。具体而言,使用自定义数据来源来查看您使用 BatchPutDocumentBatchDeleteDocument API 创建的数据来源连接器的同步指标。

要对 Amazon Kendra 数据来源连接器进行故障排除,请参阅数据来源故障排除

创建自定义数据来源时,您可以完全控制要编制索引的文档的选择方式。Amazon Kendra 仅提供可用于监控 DATA SOLOG SYNC 作业的指标信息。您必须创建并运行用于确定数据来源索引文档的爬网程序。

您必须使用 Document 对象,以及 DocumentAttribute 中的 _source_uri 指定文档的主标题,从而将 DocumentTitleDocumentURI 包含在 Query 结果的响应中。

您可以使用控制台或使用 CreateDataSource API 为自定义数据来源创建标识符。要使用控制台,请为您的数据来源命名,并可选择提供描述和资源标签。创建数据来源后,将显示数据来源 ID。复制此 ID,以便在将数据来源与索引同步时使用。

Form for specifying data source details, including name, description, and optional tags.

您还可以使用 CreateDataSource API 创建自定义数据来源。API 会返回一个 ID,供您在同步数据来源时使用。使用 CreateDataSource API 创建自定义数据来源时,无法设置 ConfigurationRoleArnSchedule 参数。如果您设置了这些参数,则 Amazon Kendra 会返回 ValidationException 异常。

要使用自定义数据来源,请创建一个负责更新 Amazon Kendra 索引的应用程序。该应用程序依赖于您创建的爬网程序。爬网程序会读取存储库中的文档并确定应将哪些文档发送到 Amazon Kendra。您的应用程序应执行以下步骤:

  1. 爬取您的存储库,列出存储库中添加、更新或删除的文档。

  2. 调用 StartDataSourceSyncJob API 发出同步作业正在启动的信号。您需要提供一个数据来源 ID 来标识正在同步的数据来源。Amazon Kendra 会返回用于标识特定同步任务的执行 ID。

  3. 调用 BatchDeleteDocument API 从索引中删除文档。您可以提供数据来源 ID 和执行 ID 来标识正在同步的数据来源以及与此更新关联的作业。

  4. 调用 StopDataSourceSyncJob API 发出同步任务结束的信号。调用 StopDataSourceSyncJob API 后,关联的执行 ID 不再有效。

  5. 使用索引调用 ListDataSourceSyncJobs API,列出数据来源的同步任务并查看同步作业的指标。

结束同步作业后,您可以开始新的同步作业。可能需要一段时间才能将所有提交的文档添加到索引中。使用 ListDataSourceSyncJobs API 查看同步任务的状态。如果同步作业返回的 StatusSYNCING_INDEXING,则某些文档仍在编制索引。当上一个作业的状态为 FAILEDSUCCEEDED 时,您可以启动新的同步作业。

调用 StopDataSourceSyncJob API 后,您不能在调用 BatchPutDocumentBatchDeleteDocument API 时使用同步任务标识符。如果您这样做,则提交的所有文档都将在 API 的 FailedDocuments 响应消息中返回。

必需的属性

当您使用 BatchPutDocument API 向 Amazon Kendra 提交文档时,每个文档都需要两个属性来标识其所属的数据来源和同步运行。要将自定义数据来源的文档正确映射到 Amazon Kendra 索引,您必须提供以下两个属性:

  • _data_source_id - 数据来源的标识符。当您使用控制台或 CreateDataSource API 创建数据来源时,会返回此值。

  • _data_source_sync_job_execution_id - 同步运行的标识符。当您开始与 StartDataSourceSyncJob API 进行索引同步时,会返回该值。

以下是使用自定义数据来源为文档编制索引所需的 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 - 数据来源的标识符。当您使用控制台或 CreateDataSource API 创建数据来源时,会返回此值。

  • DataSourceSyncJobId - 同步运行的标识符。当您开始与 StartDataSourceSyncJob API 进行索引同步时,会返回该值。

以下是使用 BatchDeleteDocument API 从索引中删除文档所需的 JSON。

{ "DataSourceSyncJobMetricTarget": { "DataSourceId": "data source identifier", "DataSourceSyncJobId": "sync job identifier" }, "DocumentIdList": [ "document identifier" ], "IndexId": "index identifier" }

查看指标

同步任务完成后,您可以使用 DataSourceSyncJobMetrics API 来获取与同步任务相关的指标。使用它来监控您的自定义数据来源同步。

如果您多次提交同一个文档,无论是作为 BatchPutDocument API、BatchDeleteDocument API 的一部分,还是为添加和删除提交该文档,该文档在指标中仅计入一次。

  • DocumentsAdded - 使用与首次添加到索引中的此同步作业关联的 BatchPutDocument API 提交的文档数量。如果在同步中为添加多次提交文档,则该文档在指标中仅计入一次。

  • DocumentsDeleted - 使用与从索引中删除的此同步作业关联的 BatchDeleteDocument API 提交的文档数量。如果在同步中为删除多次提交文档,则该文档在指标中仅计入一次。

  • DocumentsFailed - 与该同步作业关联但编制索引失败的文档数量。Amazon Kendra 已接受为这些文档编制索引,但无法编制索引或已删除。如果 Amazon Kendra 未接受某个文档,则该文档的标识符将在 BatchPutDocumentBatchDeleteDocument API 的 FailedDocuments 响应属性中返回。

  • DocumentsModified - 使用与在 Amazon Kendra 索引中修改的此同步作业关联的 BatchPutDocument API 提交的已修改文档的数量。

Amazon Kendra 在为文档编制索引时也会发出 Amazon CloudWatch 指标。有关更多信息,请参阅使用 Amazon CloudWatch 监控 Amazon Kendra

Amazon Kendra 不返回自定义数据来源的 DocumentsScanned 指标。它还会发出文档Amazon Kendra 数据来源的指标中列出的 CloudWatch 指标。

了解更多

要了解有关将 Amazon Kendra 与自定义数据来源集成的更多信息,请参阅: