我正在使用influxdb存储监视指标。我有一个带有多个度量值的数据库,并且附加了不同的保留策略。 度量A->保留策略rp1(默认); 度量B->保留策略rp2。
我正在使用influxdb-java客户端,并使用InfluxDBMapper和QueryBuilder。 我无法使用rp2查询测量B。我只能指定表名,在内部它采用默认RP,即rp1。
这是我建立查询的方式:
private Query buildQueryHelper(Query q, Clause c)
{
if (q instanceof WhereQueryImpl)
{
q = ((WhereQueryImpl) q).and(c);
} else
{
q = ((SelectQueryImpl) q).where(c);
}
return q;
}
Query q = null;
q = select().from("dbname", "B"); // at this point I have tried giving dbname.rp2.B using overridden function as from("dbname.rp2.B") but it throws IllegalStateException
if (StringUtils.isNonNullNonEmpty(req.getAccountId()))
{
q = buildQueryHelper(q, eq(InfluxConstants.TAG_ACCOUNT_ID, req.getAccountId()));
}
if (StringUtils.isNonNullNonEmpty(req.getReqUUID()))
{
q = buildQueryHelper(q, eq(InfluxConstants.TAG_REQ_UUID, req.getReqUUID()));
}
if (StringUtils.isNonNullNonEmpty(req.getUserId()))
{
q = buildQueryHelper(q, eq(InfluxConstants.TAG_USER_ID, req.getUserId()));
}
final List<B> result = influxDBMapper.query(q, B.class);
从流入日志中,我可以清楚地看到正在选择rp1。我应该如何使用QueryBuilder设置特定的保留策略?