示例代碼:
/*
* 通過multiFieldQuery() API。
* 請求創(chuàng)建流程:MultiFieldSubQueryDetails List -> MultiFieldSubQuery -> MultiFieldQuery
* 現(xiàn)在多值查詢支持多個子查詢。
*
* 查詢時必須提供的信息:
* MultiFieldSubQueryDetails List: 查詢指標下具體的度量(子類比)信息。例如只查詢"speed"或者“direction”
* 里面可以指定聚合運算(Aggreagtor),值過濾(dpValue),斜率計算(rate),降采樣(downsample)等。
* Metric: 代表查詢的數(shù)據(jù)指標,例如 "wind"
* Time Range: Start Time and End Time
*
* 可選信息:
* Tags: 過濾時間的信息
* Limit/Offset: 分頁處理
*/
// 創(chuàng)建要查詢 fields 的信息
// Query : Filter: level >= 1.2 & speed >= 45.2
MultiFieldSubQueryDetails fieldDetail_1 = MultiFieldSubQueryDetails
.field("speed").aggregator(Aggregator.NONE).dpValue(">=45.2").build();
MultiFieldSubQueryDetails fieldDetail_2 = MultiFieldSubQueryDetails
.field("level").aggregator(Aggregator.NONE).dpValue(">=1.2").build();
MultiFieldSubQueryDetails fieldDetail_3 = MultiFieldSubQueryDetails
.field("direction").aggregator(Aggregator.NONE).build();
MultiFieldSubQueryDetails fieldDetail_4 = MultiFieldSubQueryDetails
.field("description").aggregator(Aggregator.NONE).build();
List<MultiFieldSubQueryDetails> fieldsDetails = new ArrayList();
fieldsDetails.add(fieldDetail_1);
fieldsDetails.add(fieldDetail_2);
fieldsDetails.add(fieldDetail_3);
fieldsDetails.add(fieldDetail_4);
// 創(chuàng)建多值模型子查詢
MultiFieldSubQuery subQuery = MultiFieldSubQuery.metric("wind")
.tag("sensor", "95D8-7913")
.tag("city", "hangzhou")
.tag("province", "zhejiang")
.fieldsInfo(fieldsDetails)
.build();
// 創(chuàng)建多值模型查詢
MultiFieldQuery query = MultiFieldQuery.start(1537170208L).end(1537170209L)
.sub(subQuery).build();
List<MultiFieldQueryResult> result = tsdb.multiFieldQuery(query);
if (result != null) {
System.out.println("##### Multi-field Query Result : " + JSON.toJSONString(result));
if (result.size() > 0) {
System.out.println("##### Multi-field Query Result asMap : " + JSON.toJSONString(result.get(0).asMap()));
}
} else {
System.out.println("##### Empty reply from HiTSDB server. ######");
}