为什么 InfluxDBClient.getBucketsApi().findBuckets() API 方法总是返回空的存储桶列表?

问题描述 投票:0回答:1

大家好

我有一个 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;
    }
}
java influxdb java-17 influxdb-2 flux-influxdb
1个回答
0
投票

今天早上,我刚刚找到了一个替代解决方案,它给了我预期的确切结果。我上周一定很累才没有看到它:

List<Bucket> buckets = influxClient.getBucketsApi().findBucketsByOrgName("test");

他的名字是什么,他在不知道我寻找解决方案多久的情况下给了我-1 > 你非常有帮助,谢谢 cnrd!

致所有其他人 > 祝你有美好的一天:)

蒂埃里

© www.soinside.com 2019 - 2024. All rights reserved.