|
|
|
@ -14,8 +14,11 @@ import org.elasticsearch.client.indices.CreateIndexRequest; |
|
|
|
import org.elasticsearch.client.indices.CreateIndexResponse; |
|
|
|
import org.elasticsearch.common.settings.Settings; |
|
|
|
import org.elasticsearch.common.xcontent.XContentType; |
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder; |
|
|
|
import org.elasticsearch.index.query.QueryBuilders; |
|
|
|
import org.elasticsearch.rest.RestStatus; |
|
|
|
import org.elasticsearch.search.SearchHit; |
|
|
|
import org.elasticsearch.search.SearchHits; |
|
|
|
import org.elasticsearch.search.aggregations.Aggregation; |
|
|
|
import org.elasticsearch.search.aggregations.AggregationBuilders; |
|
|
|
import org.elasticsearch.search.aggregations.Aggregations; |
|
|
|
@ -33,6 +36,11 @@ import org.elasticsearch.search.sort.SortOrder; |
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.time.LocalDate; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.time.LocalTime; |
|
|
|
import java.time.ZoneId; |
|
|
|
import java.time.temporal.ChronoUnit; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
public class DemoTes { |
|
|
|
@ -56,15 +64,39 @@ public class DemoTes { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
/* 按日期分组 |
|
|
|
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); |
|
|
|
BoolQueryBuilder bool = new BoolQueryBuilder(); |
|
|
|
// |
|
|
|
long l = LocalDate.now().plus(-1, ChronoUnit.DAYS) |
|
|
|
.atTime(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); |
|
|
|
BoolQueryBuilder boolQueryBuilder = bool.must(QueryBuilders.termQuery("machineIotMac", 102104060037L)) |
|
|
|
.filter(QueryBuilders.rangeQuery("reportTime") |
|
|
|
.from(null).timeZone("Z").to(l).includeLower(false).includeUpper(true)); |
|
|
|
searchSourceBuilder.size(1); |
|
|
|
searchSourceBuilder.sort("reportTime", SortOrder.DESC); |
|
|
|
searchSourceBuilder.query(boolQueryBuilder); |
|
|
|
SearchRequest request = new SearchRequest("iot_device_monitoring_data"); |
|
|
|
request.source(searchSourceBuilder); |
|
|
|
// 执行请求 |
|
|
|
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT); |
|
|
|
if(RestStatus.OK.equals(response.status())) { |
|
|
|
SearchHit[] hits = response.getHits().getHits(); |
|
|
|
if(hits.length > 0) { |
|
|
|
SearchHit hit = hits[0]; |
|
|
|
System.out.println(hit.getSourceAsString()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 按日期分组 |
|
|
|
/*SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); |
|
|
|
DateHistogramAggregationBuilder dateHistogramAgg = AggregationBuilders.dateHistogram("dateAgg") |
|
|
|
.field("reportTime").fixedInterval(DateHistogramInterval.hours(1)).format("yyyy-MM-dd HH"); |
|
|
|
.field("reportTime").fixedInterval(DateHistogramInterval.days(1)).format("yyyy-MM-dd"); |
|
|
|
TopHitsAggregationBuilder topSubAgg = AggregationBuilders.topHits("topSubAgg").size(1).sort("reportTime", SortOrder.DESC); |
|
|
|
dateHistogramAgg.subAggregation(topSubAgg); |
|
|
|
searchSourceBuilder.aggregation(dateHistogramAgg); |
|
|
|
searchSourceBuilder.size(0); |
|
|
|
SearchRequest request = new SearchRequest("iot_device_monitoring_data_*"); |
|
|
|
SearchRequest request = new SearchRequest("iot_device_monitoring_data"); |
|
|
|
request.source(searchSourceBuilder); |
|
|
|
// 执行请求 |
|
|
|
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT); |
|
|
|
@ -90,11 +122,11 @@ public class DemoTes { |
|
|
|
|
|
|
|
// 自定义索引 |
|
|
|
// 创建索引 |
|
|
|
CreateIndexRequest request = new CreateIndexRequest("my_test_231"); |
|
|
|
/*CreateIndexRequest request = new CreateIndexRequest("my_test_231"); |
|
|
|
// 索引设置,3个master分片,每个master2个从片 |
|
|
|
/*request.settings(Settings.builder() |
|
|
|
request.settings(Settings.builder() |
|
|
|
.put("index.number_of_shards", 3) |
|
|
|
.put("index.number_of_replicas", 2));*/ |
|
|
|
.put("index.number_of_replicas", 2)); |
|
|
|
// 字段映射 |
|
|
|
String mappersStr = "{\n" + |
|
|
|
" \"properties\": {\n" + |
|
|
|
@ -144,8 +176,11 @@ public class DemoTes { |
|
|
|
boolean shardsAcknowledged = createIndexResponse.isShardsAcknowledged(); |
|
|
|
if(acknowledged && shardsAcknowledged) { |
|
|
|
System.out.println("索引创建成功"); |
|
|
|
} |
|
|
|
} catch (IOException e) { |
|
|
|
}*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|