大家好
我有一个 InfluxDB 2.7 OSS 服务器,在该服务器上我存储了多个地理站点 (
organization
) 和多个农场 (bucket
) 的 Feed 分发数据。
我的一个用例是提供某个地理站点的所有消费数据,这需要跨多个存储桶进行 Flux 查询。
由于我还没有找到此类查询的方法,所以我使用
InfluxDBClient.getBucketsApi().findBuckets()
方法来检索存储桶列表,逐一查询,然后聚合结果。
但是,在同一个 InfluxDB 连接上,使用“all-access”类型的有效令牌,我设法从
findBucketByName
方法检索存储桶,但 findBuckets
方法系统地返回一个空存储桶列表。
等效的curl查询有效:
curl 'https://my.server.url:8086/api/v2/buckets?org=test' \
--header "Authorization: Token myAllAccessToken" \
--header "Accept: application/json" \
--header "Content-Type: application/json"
导致此故障的原因可能是什么?下面是我的测试方法的代码。如果我不完全清楚,请随时问我问题。
谢谢您的回复
蒂埃里
public static List<Bucket> getBuckets(String url, String org, String token)
{
InfluxDBClientOptions options = InfluxDBClientOptions.builder()
.url( url )
.org( org )
.authenticateToken( token.toCharArray() )
.build();
try (InfluxDBClient influxClient = InfluxDBClientFactory.create(options))
{
List<Bucket> buckets = influxClient.getBucketsApi().findBuckets();
// --- only for tests ---
for(Bucket b:buckets)
System.out.println(b.getName());
Bucket tasks = influxClient.getBucketsApi().findBucketByName("_tasks");
Bucket monitoring = influxClient.getBucketsApi().findBucketByName("_monitoring");
Bucket test = influxClient.getBucketsApi().findBucketByName("test");
System.out.println(tasks.getName());
System.out.println(monitoring.getName());
System.out.println(test.getName());
// --------------------
return buckets;
}
}
今天早上,我刚刚找到了一个替代解决方案,它给了我预期的确切结果。我上周一定很累才没有看到它:
List<Bucket> buckets = influxClient.getBucketsApi().findBucketsByOrgName("test");
致他的名字是什么,他在不知道我寻找解决方案多久的情况下给了我-1 > 你非常有帮助,谢谢 cnrd!
致所有其他人 > 祝你有美好的一天:)
蒂埃里