Couchbase Analytics Java SDK 连接创建 + 安全角色

Couchbase Analytics Java SDK connection creation + Security Roles

我正在使用 Couchbase Java SDK 来查询 couchbase 分析服务。本教程介绍了该过程:https://docs.couchbase.com/java-sdk/2.7/analytics-using-sdk.html

Java SDK 提供了一个 Bucket 对象作为访问 couchbase 的方式。但是,存储桶是独立于分析数据集的实体。例如,我的存储桶名为 data,我有一个要查询的分析数据集,名为 requests

我找不到仅连接到 requests 数据集的方法。 SDK 只会连接到 data 存储桶。从那里我可以通过编写一些 N1QL 来查询 requests 数据集。此解决方法意味着我用于 运行 分析查询的用户凭据还必须能够访问我的主要生产 data 存储桶,我宁愿阻止它。

有没有一种方法可以使用 SDK 简单地连接到分析数据集?

我目前创建连接的代码如下所示:

public class CouchbaseConfig {

  @Bean
  public Bucket bucket(CouchbaseProperties properties) {
    return cluster().openBucket("data"); // Changing this to the data-set name returns error
  }

  private Cluster cluster() {
    Cluster cluster = CouchbaseCluster.create("localhost");
    cluster.authenticate("Administrator", "password");
    return cluster;
  }

}

在存储桶名称中使用 requests 数据集名称会导致此错误:

Failed to instantiate [com.couchbase.client.java.Bucket]: Factory method 'bucket' threw exception; nested exception is com.couchbase.client.java.error.BucketDoesNotExistException: Bucket "requests" does not exist.

使用 data 存储桶名称,但身份验证用户名/密码 "analytics-reader" / "password"(仅 Analytics Reader)角色导致此错误:

Could not load bucket configuration: FAILURE({"message":"Forbidden. User needs one of the following permissions","permissions":["cluster.bucket[data].settings!read"]})

我发现的唯一解决方法是将 analytics-reader 用户 'Application Access' 提供给数据` 存储桶

使用 SDK3 和 Couchbase 6.5 可以直接连接到分析。在所有以前的版本(包括 SDK 2.7)中,查询分析的唯一方法是先连接到存储桶。