示例代码:
/** 通过multiFieldQuery() API。* 请求创建流程:MultiFieldSubQueryDetails List -> MultiFieldSubQuery -> MultiFieldQuery* 现在多值查询支持多个子查询。** 查询时必须提供的信息:* MultiFieldSubQueryDetails List: 查询指标下具体的度量(子类比)信息。例如只查询"speed"或者“direction”* 里面可以指定聚合运算(Aggreagtor),值过滤(dpValue),斜率计算(rate),降采样(downsample)等。* Metric: 代表查询的数据指标,例如 "wind"* Time Range: Start Time and End Time** 可选信息:* Tags: 过滤时间的信息* Limit/Offset: 分页处理*/// 创建要查询 fields 的信息MultiFieldSubQueryDetails speedFieldDetails = MultiFieldSubQueryDetails.field("speed").aggregator(Aggregator.SUM).downsample("2s-sum").build();MultiFieldSubQueryDetails levelFieldDetails = MultiFieldSubQueryDetails.field("level").aggregator(Aggregator.AVG).downsample("2s-avg").build();MultiFieldSubQueryDetails tempFieldDetails = MultiFieldSubQueryDetails.field("temperature").aggregator(Aggregator.COUNT).downsample("2s-count").build();MultiFieldSubQueryDetails allFieldsDetails1 = MultiFieldSubQueryDetails.field("*").aggregator(Aggregator.MAX).downsample("2s-max").alias("max_").build();MultiFieldSubQueryDetails allFieldsDetails2 = MultiFieldSubQueryDetails.field("*").aggregator(Aggregator.MIN).downsample("2s-min").alias("min_").build();List<MultiFieldSubQueryDetails> subQueryDetails = new LinkedList<>();subQueryDetails.add(speedFieldDetails);subQueryDetails.add(levelFieldDetails);subQueryDetails.add(tempFieldDetails);subQueryDetails.add(allFieldsDetails1);subQueryDetails.add(allFieldsDetails2);// 创建多值模型子查询MultiFieldSubQuery subQuery = MultiFieldSubQuery.metric(metric).fieldsInfo(subQueryDetails).filter(Filter.filter(FilterType.LiteralOr, "district", "Yuhang|Xiacheng|Xihu", true).build()).build();// 创建多值模型查询MultiFieldQuery query = MultiFieldQuery.start(1542772000L).end(1542772020L).msResolution(false).sub(subQuery).build();List<MultiFieldQueryResult> results = tsdb.multiFieldQuery(query);