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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自定义数据来源连接器

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

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

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

您必须使用 Document 对象和_source_uri来指定文档的主标题,才能DocumentTitleDocumentURI包含在Query结果的响应中。DocumentAttribute

您可以使用控制台或 CreateDataSourceAPI 为自定义数据源创建标识符。要使用控制台,请为您的数据来源命名,并可选择提供描述和资源标签。创建数据来源后,将显示数据来源 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. 调用 StartDataSourceSyncJobAPI 以发出同步作业正在启动的信号。您需要提供一个数据源 ID 来标识正在同步的数据源。 Amazon Kendra 返回用于标识特定同步任务的执行 ID。

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

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

  5. 使用索引和数据源标识符调用 ListDataSourceSyncJobsAPI 以列出数据源的同步任务并查看同步作业的指标。

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

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

必需的属性

当您 Amazon Kendra 使用 BatchPutDocument API 向提交文档时,每个文档都需要两个属性来标识其所属的数据源和同步运行。要将自定义数据来源的文档正确映射到 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" }

查看 指标

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

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

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

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

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

  • DocumentsModified— 使用与此同步作业关联的 BatchPutDocument API 提交的已修改文档的数量,这些文档已在 Amazon Kendra 索引中进行了修改。

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

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

了解更多

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