Я использую Couchbase Java SDK для запроса службы аналитики couchbase. Процесс описан в этом руководстве: https://docs.couchbase.com/java-sdk/2.7/analytics-using-sdk.html
В Java SDK предоставляется объект Bucket
в качестве средства доступа к базе данных. Однако ведро - это отдельная сущность из набора данных аналитики. Например, моя корзина называется data
, и у меня есть набор данных аналитики, который я хочу запросить, называется requests
.
Я не могу найти способ подключения только к данным requests
набор. SDK будет подключаться только к корзине data
. Оттуда я могу запросить набор данных requests
, написав какой-нибудь N1QL. Этот обходной путь означает, что учетные данные пользователя, которые я использую для выполнения аналитических запросов, также должны иметь доступ к моему основному рабочему сегменту 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
«Доступ к приложению» к «корзине» данных