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.
86 lines
4.2 KiB
86 lines
4.2 KiB
import com.qniao.iot.gizwits.CloudBoxData;
|
|
import com.qniao.iot.gizwits.utils.EsRestClientUtil;
|
|
import com.qniao.iot.machine.event.MachineIotDataReceivedEvent;
|
|
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.RestClientBuilder;
|
|
import org.elasticsearch.client.RestHighLevelClient;
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
import org.elasticsearch.index.query.TermQueryBuilder;
|
|
import org.elasticsearch.rest.RestStatus;
|
|
import org.elasticsearch.search.aggregations.AggregationBuilder;
|
|
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
|
import org.elasticsearch.search.aggregations.Aggregations;
|
|
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
|
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
|
|
import org.elasticsearch.search.aggregations.metrics.ParsedStats;
|
|
import org.elasticsearch.search.aggregations.metrics.ParsedTopHits;
|
|
import org.elasticsearch.search.aggregations.metrics.TopHitsAggregationBuilder;
|
|
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
|
import org.elasticsearch.search.sort.SortOrder;
|
|
|
|
import java.io.IOException;
|
|
import java.sql.Date;
|
|
import java.time.LocalDate;
|
|
import java.time.ZoneOffset;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class Demo1 {
|
|
|
|
public static void main(String[] args) throws IOException {
|
|
|
|
String host = "120.79.137.137:9200";
|
|
String[] nodeIpInfos = host.split(":");
|
|
RestClientBuilder builder = RestClient.builder(new HttpHost(nodeIpInfos[0], Integer.parseInt(nodeIpInfos[1]), "http"))
|
|
.setRequestConfigCallback(requestConfigBuilder -> {
|
|
requestConfigBuilder.setConnectTimeout(10 * 60 * 1000);
|
|
requestConfigBuilder.setSocketTimeout(10 * 60 * 1000);
|
|
requestConfigBuilder.setConnectionRequestTimeout(10 * 60 * 1000);
|
|
return requestConfigBuilder;
|
|
});
|
|
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
|
|
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "qnol26215"));
|
|
builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider));
|
|
RestHighLevelClient client = new RestHighLevelClient(builder);
|
|
|
|
|
|
|
|
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
|
|
/*BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
|
|
.must(QueryBuilders.termQuery("machineIotMac", 102104060100L));
|
|
searchSourceBuilder.query(queryBuilder);*/
|
|
|
|
TermsAggregationBuilder jobDurationTotal1 = AggregationBuilders.terms("stationAgg").size(100).minDocCount(1).field("machineIotMac");
|
|
TopHitsAggregationBuilder sort = AggregationBuilders.topHits("top1").size(1).sort("reportTime", SortOrder.DESC);
|
|
|
|
jobDurationTotal1.subAggregation(sort);
|
|
searchSourceBuilder.aggregation(jobDurationTotal1);
|
|
|
|
|
|
searchSourceBuilder.size(0);
|
|
SearchRequest request = new SearchRequest("machine_iot_data_received_event_*");
|
|
request.source(searchSourceBuilder);
|
|
// 执行请求
|
|
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
|
|
// 获取响应中的聚合信息
|
|
Aggregations aggregations = response.getAggregations();
|
|
if (RestStatus.OK.equals(response.status()) || aggregations != null) {
|
|
Terms jobDurationTotal = aggregations.get("stationAgg");
|
|
List<? extends Terms.Bucket> buckets = jobDurationTotal.getBuckets();
|
|
ParsedTopHits topHits = buckets.get(0).getAggregations().get("top1");
|
|
System.out.println(topHits.getHits().getHits()[0].getSourceAsString());
|
|
|
|
}
|
|
}
|
|
}
|