Aws Kendra 和 Spring 启动
Aws Kendra and Spring boot
我想将 spring boot 与 aws kendra 查询集成 index.I 想利用 kendra 作为弹性搜索,我在其中进行 api 搜索查询,然后获得相同的结果通过 api.
文档没有明确提及连接 procedure/steps。不确定那是否可能。
P.s 作为网络爬虫创建了索引和数据源。现在下一步是什么。
您可以使用 AWS SDK for Java 对 AWS 服务进行 API 调用。您可以在上面的 link 中找到代码示例。
设置您的 Kendra 客户端将如下所示:
String accessKey = "YOUR_ACCESS_KEY";
String secretKey = "YOUR_SECRET_KEY";
BasicAWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
AWSkendra kendraClient = AWSkendraClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.build();
设置 Kendra 客户端后,您可以使用 query method 查询您的 Kendra 索引。
有一些示例说明如何从 Spring BOOT 应用程序调用 AWS 服务。以下是一些显示 AWS SDK for Java V2:
的使用
- Creating your first AWS Java web application
- Creating a dynamic web application that analyzes photos using the AWS SDK for Java.
- Creating the Amazon DynamoDB web application item tracker
Spring BOOT/AWS 服务示例 Github。
虽然(还)没有 Spring Kendra 客户端的 BOOT 示例,但模式是相同的。您可以构建一个 MVC 应用程序并构建一个使用 https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/kendra/KendraClient.html.
的服务
我们可以按照官方AWS documentation查询一个索引。棘手的部分是在构建 KendraClient
对象时提供凭据。代码主要取自 link 中提到的添加创建 Kendra 客户端的代码。
示例代码如下所示 -
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.QueryRequest;
import software.amazon.awssdk.services.kendra.model.QueryResponse;
import software.amazon.awssdk.services.kendra.model.QueryResultItem;
public class SearchKendraIndex {
public static void main(String[] args) {
String accessKey = "your-access-key";
String secretKey = "your-secret-key";
AwsCredentials awsCredentials = AwsBasicCredentials.create(accessKey, secretKey);
KendraClient kendra = KendraClient
.builder()
.region(Region.AP_SOUTHEAST_1) // Change it with your region
.credentialsProvider(() -> awsCredentials)
.build();
String query = "your-search-term";
String indexId = "your-index-id";
QueryRequest queryRequest = QueryRequest
.builder()
.queryText(query)
.indexId(indexId)
.build();
QueryResponse queryResponse = kendra.query(queryRequest);
System.out.printf("\nSearch results for query: %s%n", query);
for (QueryResultItem item : queryResponse.resultItems()) {
System.out.println("----------------------");
System.out.printf("Type: %s%n", item.type());
switch (item.type()) {
case QUESTION_ANSWER, ANSWER -> {
String answerText = item.documentExcerpt().text();
System.out.println(answerText);
}
case DOCUMENT -> {
String documentTitle = item.documentTitle().text();
System.out.printf("Title: %s%n", documentTitle);
String documentExcerpt = item.documentExcerpt().text();
System.out.printf("Excerpt: %s%n", documentExcerpt);
}
default -> System.out.printf("Unknown query result type: %s%n", item.type());
}
System.out.println("-----------------------\n");
}
}
}
我想将 spring boot 与 aws kendra 查询集成 index.I 想利用 kendra 作为弹性搜索,我在其中进行 api 搜索查询,然后获得相同的结果通过 api.
文档没有明确提及连接 procedure/steps。不确定那是否可能。
P.s 作为网络爬虫创建了索引和数据源。现在下一步是什么。
您可以使用 AWS SDK for Java 对 AWS 服务进行 API 调用。您可以在上面的 link 中找到代码示例。
设置您的 Kendra 客户端将如下所示:
String accessKey = "YOUR_ACCESS_KEY";
String secretKey = "YOUR_SECRET_KEY";
BasicAWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
AWSkendra kendraClient = AWSkendraClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.build();
设置 Kendra 客户端后,您可以使用 query method 查询您的 Kendra 索引。
有一些示例说明如何从 Spring BOOT 应用程序调用 AWS 服务。以下是一些显示 AWS SDK for Java V2:
的使用- Creating your first AWS Java web application
- Creating a dynamic web application that analyzes photos using the AWS SDK for Java.
- Creating the Amazon DynamoDB web application item tracker
Spring BOOT/AWS 服务示例 Github。
虽然(还)没有 Spring Kendra 客户端的 BOOT 示例,但模式是相同的。您可以构建一个 MVC 应用程序并构建一个使用 https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/kendra/KendraClient.html.
的服务我们可以按照官方AWS documentation查询一个索引。棘手的部分是在构建 KendraClient
对象时提供凭据。代码主要取自 link 中提到的添加创建 Kendra 客户端的代码。
示例代码如下所示 -
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.QueryRequest;
import software.amazon.awssdk.services.kendra.model.QueryResponse;
import software.amazon.awssdk.services.kendra.model.QueryResultItem;
public class SearchKendraIndex {
public static void main(String[] args) {
String accessKey = "your-access-key";
String secretKey = "your-secret-key";
AwsCredentials awsCredentials = AwsBasicCredentials.create(accessKey, secretKey);
KendraClient kendra = KendraClient
.builder()
.region(Region.AP_SOUTHEAST_1) // Change it with your region
.credentialsProvider(() -> awsCredentials)
.build();
String query = "your-search-term";
String indexId = "your-index-id";
QueryRequest queryRequest = QueryRequest
.builder()
.queryText(query)
.indexId(indexId)
.build();
QueryResponse queryResponse = kendra.query(queryRequest);
System.out.printf("\nSearch results for query: %s%n", query);
for (QueryResultItem item : queryResponse.resultItems()) {
System.out.println("----------------------");
System.out.printf("Type: %s%n", item.type());
switch (item.type()) {
case QUESTION_ANSWER, ANSWER -> {
String answerText = item.documentExcerpt().text();
System.out.println(answerText);
}
case DOCUMENT -> {
String documentTitle = item.documentTitle().text();
System.out.printf("Title: %s%n", documentTitle);
String documentExcerpt = item.documentExcerpt().text();
System.out.printf("Excerpt: %s%n", documentExcerpt);
}
default -> System.out.printf("Unknown query result type: %s%n", item.type());
}
System.out.println("-----------------------\n");
}
}
}