You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
4.7 KiB
87 lines
4.7 KiB
import org.apache.http.HttpHost;
|
|
import org.apache.http.auth.AuthScope;
|
|
import org.apache.http.auth.UsernamePasswordCredentials;
|
|
import org.apache.http.client.CredentialsProvider;
|
|
import org.apache.http.impl.client.BasicCredentialsProvider;
|
|
import org.elasticsearch.action.search.SearchRequest;
|
|
import org.elasticsearch.action.search.SearchResponse;
|
|
import org.elasticsearch.client.RequestOptions;
|
|
import org.elasticsearch.client.RestClient;
|
|
import org.elasticsearch.client.RestHighLevelClient;
|
|
import org.elasticsearch.rest.RestStatus;
|
|
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
|
import org.elasticsearch.search.aggregations.Aggregations;
|
|
import org.elasticsearch.search.aggregations.metrics.ParsedSum;
|
|
import org.elasticsearch.search.aggregations.metrics.SumAggregationBuilder;
|
|
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
|
|
|
import java.io.IOException;
|
|
import java.math.BigDecimal;
|
|
|
|
public class DemoTes {
|
|
|
|
|
|
public static void main(String[] args) throws IOException {
|
|
|
|
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient
|
|
.builder(new HttpHost("120.79.137.137", 9200, "http"))
|
|
.setHttpClientConfigCallback(httpAsyncClientBuilder -> {
|
|
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
|
|
credentialsProvider.setCredentials(AuthScope.ANY,
|
|
new UsernamePasswordCredentials("elastic", "qnol26215"));
|
|
return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
|
|
})
|
|
.setRequestConfigCallback(requestConfigBuilder -> {
|
|
// 设置es连接超时时间
|
|
requestConfigBuilder.setConnectTimeout(3000);
|
|
return requestConfigBuilder;
|
|
}));
|
|
|
|
try {
|
|
// 构建查询条件(注意:termQuery 支持多种格式查询,如 boolean、int、double、string 等,这里使用的是 string 的查询)
|
|
/*SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
|
|
searchSourceBuilder.query(QueryBuilders.termQuery("machineIotMac", "102104060102"));
|
|
searchSourceBuilder.sort("reportTime", SortOrder.DESC);
|
|
searchSourceBuilder.size(1);
|
|
// 创建查询请求对象,将查询对象配置到其中
|
|
SearchRequest searchRequest = new SearchRequest("machine_iot_data_received_event_202208",
|
|
"machine_iot_data_received_event_202207", "machine_iot_data_received_event_197001");
|
|
searchRequest.source(searchSourceBuilder);
|
|
// 执行查询,然后处理响应结果
|
|
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
|
|
// 根据状态和数据条数验证是否返回了数据
|
|
if (RestStatus.OK.equals(searchResponse.status()) && searchResponse.getHits().getTotalHits().value > 0) {
|
|
SearchHits hits = searchResponse.getHits();
|
|
SearchHit reqHit = hits.getHits()[0];
|
|
MachineIotDataReceivedEvent receivedEvent = JSONUtil
|
|
.toBean(reqHit.getSourceAsString(), MachineIotDataReceivedEvent.class);
|
|
System.out.println(receivedEvent);
|
|
}*/
|
|
|
|
|
|
|
|
SearchSourceBuilder searchSourceBuilder1 = new SearchSourceBuilder();
|
|
searchSourceBuilder1.size(0);
|
|
SumAggregationBuilder sumCurrStoppingDuration = AggregationBuilders.sum("sum_currStoppingDuration").field("currStoppingDuration");
|
|
SumAggregationBuilder sumCurrWaitingDuration = AggregationBuilders.sum("sum_currWaitingDuration").field("currWaitingDuration");
|
|
searchSourceBuilder1.aggregation(sumCurrStoppingDuration);
|
|
searchSourceBuilder1.aggregation(sumCurrWaitingDuration);
|
|
SearchRequest request1 = new SearchRequest("machine_iot_data_received_event_*");
|
|
request1.source(searchSourceBuilder1);
|
|
// 执行请求
|
|
SearchResponse response1 = restHighLevelClient.search(request1, RequestOptions.DEFAULT);
|
|
Aggregations aggregations1 = response1.getAggregations();
|
|
if (RestStatus.OK.equals(response1.status()) || aggregations1 != null) {
|
|
ParsedSum agg = aggregations1.get("sum_currStoppingDuration");
|
|
ParsedSum agg1 = aggregations1.get("sum_currWaitingDuration");
|
|
double value = agg.getValue();
|
|
BigDecimal bigDecimal = new BigDecimal(value);
|
|
System.out.println(bigDecimal.longValueExact());
|
|
}
|
|
} catch (IOException e) {
|
|
|
|
}
|
|
|
|
restHighLevelClient.close();
|
|
}
|
|
}
|