Sample code
/** Use the multiFieldQuery() API.* You can create a request to query multi-value data by using this process: Specify the MultiFieldSubQueryDetails (list) information, create a MultiFieldSubQuery request, and then create a MultiFieldQuery request.* You can create multiple subqueries for each multi-value data query.** You must provide the following information when you perform a query:* MultiFieldSubQueryDetails: the details of the specific fields for the target metric. The fields are the sub-category of the metric. For example, you can query only the speed or direction fields.* You can specify the following parameters: aggregator, dpValue, rate, and downsample.* Metric: the metric to be queried, for example, wind.* Time Range: Start Time and End Time** The following information is optional:* Tags: the conditions that are used to filter timelines.* Limit/Offset: the pagination details.*/// Create the fields that you want to query.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);// Create a subquery for the multi-value data model.MultiFieldSubQuery subQuery = MultiFieldSubQuery.metric(metric).fieldsInfo(subQueryDetails).filter(Filter.filter(FilterType.LiteralOr, "district", "Yuhang|Xiacheng|Xihu", true).build()).build();// Create a query for the multi-value data model.MultiFieldQuery query = MultiFieldQuery.start(1542772000L).end(1542772020L).msResolution(false).sub(subQuery).build();List<MultiFieldQueryResult> results = tsdb.multiFieldQuery(query);