カスタムデータソース (Java) - Amazon Kendra

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

カスタムデータソース (Java)

以下のコードは、Java を使用したカスタムデータソースの実装の例を示します。プログラムはまずカスタムデータソースを作成し、次に新しく追加されたドキュメントをカスタムデータソースを持つインデックスに同期します。

次のコードは、カスタムデータソースを作成して使用する方法を示しています。アプリケーションでカスタムデータソースを使用している場合は、インデックスをデータソースと同期するたびに新しいデータソースを作成する必要はありません (1 回限りのプロセス)。インデックス ID とデータソース ID を使用してデータを同期します。

package com.amazonaws.kendra; import java.util.concurrent.TimeUnit; import software.amazon.awssdk.services.kendra.KendraClient; import csoftware.amazon.awssdk.services.kendra.model.BatchPutDocumentRequest; import csoftware.amazon.awssdk.services.kendra.model.BatchPutDocumentResponse; import software.amazon.awssdk.services.kendra.model.CreateDataSourceRequest; import software.amazon.awssdk.services.kendra.model.CreateDataSourceResponse; import software.amazon.awssdk.services.kendra.model.DataSourceType; import software.amazon.awssdk.services.kendra.model.Document; import software.amazon.awssdk.services.kendra.model.ListDataSourceSyncJobsRequest; import software.amazon.awssdk.services.kendra.model.ListDataSourceSyncJobsResponse; import software.amazon.awssdk.services.kendra.model.StartDataSourceSyncJobRequest; import software.amazon.awssdk.services.kendra.model.StartDataSourceSyncJobResponse; import software.amazon.awssdk.services.kendra.model.StopDataSourceSyncJobRequest; import software.amazon.awssdk.services.kendra.model.StopDataSourceSyncJobResponse; public class SampleSyncForCustomDataSource { public static void main(String[] args) { KendraClient kendra = KendraClient.builder().build(); String myIndexId = "yourIndexId"; String dataSourceName = "custom data source"; String dataSourceDescription = "Amazon Kendra custom data source connector" // Create custom data source CreateDataSourceRequest createDataSourceRequest = CreateDataSourceRequest .builder() .indexId(myIndexId) .name(dataSourceName) .description(dataSourceDescription) .type(DataSourceType.CUSTOM) .build(); CreateDataSourceResponse createDataSourceResponse = kendra.createDataSource(createDataSourceRequest); System.out.println(String.format("Response of creating data source: %s", createDataSourceResponse)); // Get the data source ID from createDataSourceResponse String dataSourceId = createDataSourceResponse.Id(); // Wait for the custom data source to become active System.out.println(String.format("Waiting for Amazon Kendra to create the data source %s", dataSourceId)); // You can use the DescribeDataSource API to check the status DescribeDataSourceRequest describeDataSourceRequest = DescribeDataSourceRequest .builder() .indexId(myIndexId) .id(dataSourceId) .build(); while (true) { DescribeDataSourceResponse describeDataSourceResponse = kendra.describeDataSource(describeDataSourceRequest); DataSourceStatus status = describeDataSourceResponse.status(); System.out.println(String.format("Creating data source. Status: %s", status)); if (status != DataSourceStatus.CREATING) { break; } TimeUnit.SECONDS.sleep(60); } // Start syncing yor data source by calling StartDataSourceSyncJob and providing your index ID // and your custom data source ID System.out.println(String.format("Synchronize the data source %s", dataSourceId)); StartDataSourceSyncJobRequest startDataSourceSyncJobRequest = StartDataSourceSyncJobRequest .builder() .indexId(myIndexId) .id(dataSourceId) .build(); StartDataSourceSyncJobResponse startDataSourceSyncJobResponse = kendra.startDataSourceSyncJob(startDataSourceSyncJobRequest); // Get the sync job execution ID from startDataSourceSyncJobResponse String executionId = startDataSourceSyncJobResponse.ExecutionId(); System.out.println(String.format("Waiting for the data source to sync with the index %s for execution ID %s", indexId, startDataSourceSyncJobResponse.executionId())); // Add 2 documents uploaded to S3 bucket to your index using the BatchPutDocument API // The added documents should sync with your custom data source Document pollyDoc = Document .builder() .s3Path( S3Path.builder() .bucket("amzn-s3-demo-bucket") .key("what_is_Amazon_Polly.docx") .build()) .title("What is Amazon Polly?") .id("polly_doc_1") .build(); Document rekognitionDoc = Document .builder() .s3Path( S3Path.builder() .bucket("amzn-s3-demo-bucket") .key("what_is_amazon_rekognition.docx") .build()) .title("What is Amazon rekognition?") .id("rekognition_doc_1") .build(); BatchPutDocumentRequest batchPutDocumentRequest = BatchPutDocumentRequest .builder() .indexId(myIndexId) .documents(pollyDoc, rekognitionDoc) .build(); BatchPutDocumentResponse result = kendra.batchPutDocument(batchPutDocumentRequest); System.out.println(String.format("BatchPutDocument result: %s", result)); // Once custom data source synced, stop the sync job using the StopDataSourceSyncJob API StopDataSourceSyncJobResponse stopDataSourceSyncJobResponse = kendra.stopDataSourceSyncJob( StopDataSourceSyncJobRequest() .indexId(myIndexId) .id(dataSourceId) ); // List your sync jobs ListDataSourceSyncJobsRequest listDataSourceSyncJobsRequest = ListDataSourceSyncJobsRequest .builder() .indexId(myIndexId) .id(dataSourceId) .build(); while (true) { ListDataSourceSyncJobsResponse listDataSourceSyncJobsResponse = kendra.listDataSourceSyncJobs(listDataSourceSyncJobsRequest); DataSourceSyncJob job = listDataSourceSyncJobsResponse.history().get(0); System.out.println(String.format("Status: %s", job.status())); } } }