本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义数据来源连接器
如果您的存储库尚未为其提供数据源连接器, Amazon Kendra 请使用自定义数据源。即使您无法使用 Amazon Kendra 数据源同步存储库,也可以使用 Amazon Kendra它来查看数据源提供的相同运行历史指标。使用它可以在 Amazon Kendra 数据源和自定义数据源之间创建一致的同步监控体验。具体而言,使用自定义数据源来查看使用BatchPutDocument和创建的数据源连接器的同步指标BatchDeleteDocument APIs。
要对 Amazon Kendra 数据来源连接器进行故障排除,请参阅数据来源故障排除。
创建自定义数据源时,您可以完全控制要编制索引的文档的选择方式。 Amazon Kendra 仅提供可用于监控数据源同步作业的指标信息。您必须创建并运行用于确定数据来源索引文档的爬网程序。
您必须使用 Document 对象和_source_uri
来指定文档的主标题,才能DocumentTitle
DocumentURI
包含在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 以发出同步任务结束的信号。调用
StopDataSourceSyncJob
API 后,关联的执行 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
- 数据来源的标识符。当您使用控制台或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 与自定义数据源集成的更多信息,请参阅: