类org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval源码实例Demo

下面列出了怎么用org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Gather-Platform   文件: CommonWebpageDAO.java
/**
 * 统计指定网站每天抓取数量
 *
 * @param domain 网站域名
 * @return
 */
public Map<Date, Long> countDomainByGatherTime(String domain) {
    AggregationBuilder aggregation =
            AggregationBuilders
                    .dateHistogram("agg")
                    .field("gatherTime")
                    .dateHistogramInterval(DateHistogramInterval.DAY).order(Histogram.Order.KEY_DESC);
    SearchRequestBuilder searchRequestBuilder = client.prepareSearch(INDEX_NAME)
            .setTypes(TYPE_NAME)
            .setQuery(QueryBuilders.matchQuery("domain", domain))
            .addAggregation(aggregation);
    SearchResponse response = searchRequestBuilder.execute().actionGet();
    Histogram agg = response.getAggregations().get("agg");
    Map<Date, Long> result = Maps.newHashMap();
    for (Histogram.Bucket entry : agg.getBuckets()) {
        DateTime key = (DateTime) entry.getKey();    // Key
        long docCount = entry.getDocCount();         // Doc count
        result.put(key.toDate(), docCount);
    }
    return result;
}
 
源代码2 项目: spider   文件: CommonWebpageDAO.java
/**
 * 统计指定网站每天抓取数量
 *
 * @param domain 网站域名
 * @return
 */
public Map<Date, Long> countDomainByGatherTime(String domain) {
    AggregationBuilder aggregation =
            AggregationBuilders
                    .dateHistogram("agg")
                    .field("gatherTime")
                    .dateHistogramInterval(DateHistogramInterval.DAY).order(Histogram.Order.KEY_DESC);
    SearchRequestBuilder searchRequestBuilder = client.prepareSearch(INDEX_NAME)
            .setTypes(TYPE_NAME)
            .setQuery(QueryBuilders.matchQuery("domain", domain))
            .addAggregation(aggregation);
    SearchResponse response = searchRequestBuilder.execute().actionGet();
    Histogram agg = response.getAggregations().get("agg");
    Map<Date, Long> result = Maps.newHashMap();
    for (Histogram.Bucket entry : agg.getBuckets()) {
        DateTime key = (DateTime) entry.getKey();    // Key
        long docCount = entry.getDocCount();         // Doc count
        result.put(key.toDate(), docCount);
    }
    return result;
}
 
源代码3 项目: logsniffer   文件: EsEventPersistence.java
protected DateHistogramInterval getInterval(final long timeRange, final int maxSlotsCount,
		final EventsCountHistogram histogram) {
	// year, quarter, month, week, day, hour, minute, second
	long dif = timeRange / maxSlotsCount / 1000;
	if (dif <= 0) {
		histogram.setInterval(HistogramInterval.SECOND);
		return DateHistogramInterval.SECOND;
	} else if (dif < 60) {
		histogram.setInterval(HistogramInterval.MINUTE);
		return DateHistogramInterval.MINUTE;
	} else if ((dif = dif / 60) < 60) {
		histogram.setInterval(HistogramInterval.HOUR);
		return DateHistogramInterval.HOUR;
	} else if ((dif = dif / 60) < 24) {
		histogram.setInterval(HistogramInterval.DAY);
		return DateHistogramInterval.DAY;
	} else if ((dif = dif / 24) < 7) {
		histogram.setInterval(HistogramInterval.WEEK);
		return DateHistogramInterval.WEEK;
	} else if ((dif = dif / 7) < 4) {
		histogram.setInterval(HistogramInterval.MONTH);
		return DateHistogramInterval.MONTH;
	}
	histogram.setInterval(HistogramInterval.YEAR);
	return DateHistogramInterval.YEAR;
}
 
源代码4 项目: foxtrot   文件: Utils.java
public static DateHistogramInterval getHistogramInterval(Period period) {
    DateHistogramInterval interval;
    switch (period) {
        case seconds:
            interval = DateHistogramInterval.SECOND;
            break;
        case minutes:
            interval = DateHistogramInterval.MINUTE;
            break;
        case hours:
            interval = DateHistogramInterval.HOUR;
            break;
        case days:
            interval = DateHistogramInterval.DAY;
            break;
        default:
            interval = DateHistogramInterval.HOUR;
            break;
    }
    return interval;
}
 
/**
 * 按天统计  各个日志级别的数量 查询条件
 *
 * @param EsModel es
 *                keywords
 *                highlights
 * @return
 */
public Search statisticsDayCondition(EsModel es) {
    Search search = null;
    if (es == null) {
        return search;
    }
    String indexName = es.getIndex();
    String type = es.getType();
    String startTime = es.getStartTime();
    String endTime = es.getEndTime();
    JSONObject keywords = es.getKeyWord();
    if (StringUtil.isBlank(indexName)) {
        return search;
    }
    if (StringUtil.isBlank(type)) {
        return search;
    }
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    if (StringUtil.isNotBlank(startTime) && StringUtil.isNotBlank(endTime)) {
        RangeQueryBuilder rangequerybuilder = QueryBuilders
                .rangeQuery("createTime")
                .from(startTime).to(endTime);
        searchSourceBuilder.query(rangequerybuilder);
    }
    AddKeyWords(keywords, searchSourceBuilder);
    ExtendedBounds extendedBounds = new ExtendedBounds(startTime, endTime);
    AggregationBuilder levelAgg = AggregationBuilders.terms("level_count").field("level").minDocCount(0);
    AggregationBuilder dateAgg = AggregationBuilders.dateHistogram("day_count")
            .field("createTime")
            .dateHistogramInterval(DateHistogramInterval.DAY)
            .format("yyyy-MM-dd")
            .extendedBounds(extendedBounds)
            .minDocCount(0L)//为空0补充
            .timeZone(DateTimeZone.forTimeZone(TimeZone.getTimeZone("GMT+8")));
    AggregationBuilder builder = dateAgg.subAggregation(levelAgg);
    searchSourceBuilder.aggregation(builder).size(0);
    search = new Search.Builder(searchSourceBuilder.toString())
            .addIndex(indexName).addType(type).build();
    return search;
}
 
public static void main(String[] args) throws IOException {
        RestHighLevelClient client = HighLevelClient.getInstance();
        try{
            DateHistogramAggregationBuilder dateHistogramAggregationBuilder = AggregationBuilders.dateHistogram("ctm_date_histogram");
            dateHistogramAggregationBuilder.field("ctm");//设置直方图针对的字段
            dateHistogramAggregationBuilder.dateHistogramInterval(DateHistogramInterval.hours(6));//直方图每个分组对应的范围
            dateHistogramAggregationBuilder.timeZone(DateTimeZone.forOffsetHours(8));//时区偏移
            dateHistogramAggregationBuilder.keyed(true);//是否需要key名
            dateHistogramAggregationBuilder.format("yyyy-MM-dd HH:mm");//key名格式
//            dateHistogramAggregationBuilder.order(BucketOrder.aggregation("_key",true));//分组key的排序
//            dateHistogramAggregationBuilder.minDocCount(0);//对于每个分组最少具有多少条数据,少于这个设置,则该分组不显示
//            dateHistogramAggregationBuilder.extendedBounds(0,8000);//设置分组区间的下线和上线,只有当min_doc_count为0时有效

            TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("cmd","weather_info");

            SearchRequest searchRequest = new SearchRequest("serverlog_20180710");//限定index
            searchRequest.types("log");//限定type

            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(termQueryBuilder);
            searchSourceBuilder.aggregation(dateHistogramAggregationBuilder);
            searchRequest.source(searchSourceBuilder);

            SearchResponse searchResponse = client.search(searchRequest);
            System.out.println(searchResponse);

        }finally{
            HighLevelClient.close();
        }
    }
 
源代码7 项目: java-study   文件: EsAggregationSearchTest.java
/**
 * @Author pancm
 * @Description 多个聚合条件测试
 * SQL: select age, name, count(*) as count1 from student group by age, name;
 * @Date  2019/7/3
 * @Param []
 * @return void
 **/
private static void groupbySearch() throws IOException{
    String buk="group";
    AggregationBuilder aggregation = AggregationBuilders.terms("age").field("age");
    AggregationBuilder aggregation2 = AggregationBuilders.terms("name").field("name");
    //根据创建时间按天分组
    AggregationBuilder aggregation3 = AggregationBuilders.dateHistogram("createtm")
            .field("createtm")
            .format("yyyy-MM-dd")
            .dateHistogramInterval(DateHistogramInterval.DAY);

    aggregation2.subAggregation(aggregation3);
    aggregation.subAggregation(aggregation2);
    agg(aggregation,buk);
}
 
源代码8 项目: Elasticsearch-Tutorial-zh-CN   文件: BaseDemo.java
/**
 * 聚合分析
 * 1. 先分组
 * 2. 子分组
 * 3. 最后算出子分组的平均值
 *
 * @param transportClient
 * @throws IOException
 */
private static void aggregate(TransportClient transportClient) throws IOException {

	SearchResponse searchResponse = transportClient.prepareSearch("product_index").setTypes("product")
			.addAggregation(AggregationBuilders.terms("product_group_by_price").field("price")
					.subAggregation(AggregationBuilders.dateHistogram("product_group_by_created_date_time").field("created_date_time")
							.dateHistogramInterval(DateHistogramInterval.YEAR)
							.subAggregation(AggregationBuilders.avg("product_avg_price").field("price")))
			).execute().actionGet();

	Map<String, Aggregation> aggregationMap = searchResponse.getAggregations().asMap();

	StringTerms productGroupByPrice = (StringTerms) aggregationMap.get("product_group_by_price");
	Iterator<Terms.Bucket> productGroupByPriceIterator = productGroupByPrice.getBuckets().iterator();
	while (productGroupByPriceIterator.hasNext()) {
		Terms.Bucket productGroupByPriceBucket = productGroupByPriceIterator.next();
		logger.info("--------------------------------:" + productGroupByPriceBucket.getKey() + ":" + productGroupByPriceBucket.getDocCount());

		Histogram productGroupByPrice1 = (Histogram) productGroupByPriceBucket.getAggregations().asMap().get("product_group_by_price");
		Iterator<org.elasticsearch.search.aggregations.bucket.histogram.Histogram.Bucket> groupByCreateDateTimeIterator = productGroupByPrice1.getBuckets().iterator();
		while (groupByCreateDateTimeIterator.hasNext()) {
			Histogram.Bucket groupByCreateDateTimeBucket = groupByCreateDateTimeIterator.next();
			logger.info("--------------------------------:" + groupByCreateDateTimeBucket.getKey() + ":" + groupByCreateDateTimeBucket.getDocCount());

			Avg avgPrice = (Avg) groupByCreateDateTimeBucket.getAggregations().asMap().get("product_avg_price");
			logger.info("--------------------------------:" + avgPrice.getValue());
		}
	}


}
 
private static SearchSourceBuilder addAggregations(
    SearchSourceBuilder searchSourceBuilder, List<Map<String, String>> facets) {
  long startTime = System.currentTimeMillis();
  ProjectLogger.log(
      "ElasticSearchRestHighImpl:addAggregations: method started at ==" + startTime,
      LoggerEnum.PERF_LOG.name());
  Map<String, String> map = facets.get(0);
  for (Map.Entry<String, String> entry : map.entrySet()) {

    String key = entry.getKey();
    String value = entry.getValue();
    if (JsonKey.DATE_HISTOGRAM.equalsIgnoreCase(value)) {
      searchSourceBuilder.aggregation(
          AggregationBuilders.dateHistogram(key)
              .field(key + ElasticSearchHelper.RAW_APPEND)
              .dateHistogramInterval(DateHistogramInterval.days(1)));

    } else if (null == value) {
      searchSourceBuilder.aggregation(
          AggregationBuilders.terms(key).field(key + ElasticSearchHelper.RAW_APPEND));
    }
  }
  ProjectLogger.log(
      "ElasticSearchRestHighImpl:addAggregations: method end =="
          + " ,Total time elapsed = "
          + calculateEndTime(startTime),
      LoggerEnum.PERF_LOG.name());
  return searchSourceBuilder;
}
 
源代码10 项目: sunbird-lms-service   文件: ElasticSearchHelper.java
/**
 * This method adds aggregations to the incoming SearchRequestBuilder object
 *
 * @param searchRequestBuilder which will be updated with facets if any present
 * @param facets Facets provide aggregated data based on a search query
 * @return SearchRequestBuilder
 */
public static SearchRequestBuilder addAggregations(
    SearchRequestBuilder searchRequestBuilder, List<Map<String, String>> facets) {
  long startTime = System.currentTimeMillis();
  ProjectLogger.log(
      "ElasticSearchHelper:addAggregations: method started at ==" + startTime,
      LoggerEnum.PERF_LOG.name());
  if (facets != null && !facets.isEmpty()) {
    Map<String, String> map = facets.get(0);
    if (!MapUtils.isEmpty(map)) {
      for (Map.Entry<String, String> entry : map.entrySet()) {

        String key = entry.getKey();
        String value = entry.getValue();
        if (JsonKey.DATE_HISTOGRAM.equalsIgnoreCase(value)) {
          searchRequestBuilder.addAggregation(
              AggregationBuilders.dateHistogram(key)
                  .field(key + RAW_APPEND)
                  .dateHistogramInterval(DateHistogramInterval.days(1)));

        } else if (null == value) {
          searchRequestBuilder.addAggregation(
              AggregationBuilders.terms(key).field(key + RAW_APPEND));
        }
      }
    }
    long elapsedTime = calculateEndTime(startTime);
    ProjectLogger.log(
        "ElasticSearchHelper:addAggregations method end =="
            + " ,Total time elapsed = "
            + elapsedTime,
        LoggerEnum.PERF_LOG.name());
  }

  return searchRequestBuilder;
}
 
源代码11 项目: foxtrot   文件: StatsTrendAction.java
private AbstractAggregationBuilder buildAggregation(StatsTrendRequest request, String table) {
    final String field = request.getField();
    DateHistogramInterval interval = Utils.getHistogramInterval(request.getPeriod());
    AbstractAggregationBuilder dateHistogramBuilder = Utils.buildDateHistogramAggregation(request.getTimestamp(),
                                                                                          interval);
    boolean isNumericField = Utils.isNumericField(getTableMetadataManager(), table, field);
    if (isNumericField) {
        dateHistogramBuilder
                .subAggregation(Utils.buildStatsAggregation(field, getParameter().getStats()));
        if (!AnalyticsRequestFlags.hasFlag(request.getFlags(), AnalyticsRequestFlags.STATS_SKIP_PERCENTILES)) {
            dateHistogramBuilder.subAggregation(Utils.buildPercentileAggregation(
                    field, request.getPercentiles(), request.getCompression()));
        }
    }
    else {
        dateHistogramBuilder
                .subAggregation(Utils.buildStatsAggregation(field, Collections.singleton(Stat.COUNT)));
    }

    if (CollectionUtils.isNullOrEmpty(getParameter().getNesting())) {
        return dateHistogramBuilder;
    }
    return Utils.buildTermsAggregation(getParameter().getNesting()
                                               .stream()
                                               .map(x -> new ResultSort(x, ResultSort.Order.asc))
                                               .collect(Collectors.toList()), Sets.newHashSet(dateHistogramBuilder),
                                       elasticsearchTuningConfig.getAggregationSize());
}
 
源代码12 项目: foxtrot   文件: HistogramAction.java
private AbstractAggregationBuilder buildAggregation(HistogramRequest parameter) {
    DateHistogramInterval interval = Utils.getHistogramInterval(getParameter().getPeriod());
    DateHistogramAggregationBuilder histogramBuilder = Utils.buildDateHistogramAggregation(getParameter().getField(),
                                                                                           interval);
    if (!CollectionUtils.isNullOrEmpty(getParameter().getUniqueCountOn())) {
        histogramBuilder.subAggregation(Utils.buildCardinalityAggregation(
                getParameter().getUniqueCountOn(), parameter.accept(new CountPrecisionThresholdVisitorAdapter(
                        elasticsearchTuningConfig.getPrecisionThreshold()))));
    }
    return histogramBuilder;
}
 
源代码13 项目: foxtrot   文件: TrendAction.java
private AbstractAggregationBuilder buildAggregation(TrendRequest request) {
    DateHistogramInterval interval = Utils.getHistogramInterval(request.getPeriod());
    String field = request.getField();

    DateHistogramAggregationBuilder histogramBuilder = Utils.buildDateHistogramAggregation(request.getTimestamp(), interval);
    if(!CollectionUtils.isNullOrEmpty(getParameter().getUniqueCountOn())) {
        histogramBuilder.subAggregation(Utils.buildCardinalityAggregation(
                getParameter().getUniqueCountOn(), request.accept(new CountPrecisionThresholdVisitorAdapter(
                        elasticsearchTuningConfig.getPrecisionThreshold()))));
    }
    return Utils.buildTermsAggregation(Lists.newArrayList(new ResultSort(field, ResultSort.Order.asc)),
            Sets.newHashSet(histogramBuilder), elasticsearchTuningConfig.getAggregationSize());
}
 
源代码14 项目: foxtrot   文件: Utils.java
public static DateHistogramAggregationBuilder buildDateHistogramAggregation(
        String field,
        DateHistogramInterval interval) {
    String metricKey = getDateHistogramKey(field);
    return AggregationBuilders.dateHistogram(metricKey)
            .minDocCount(0)
            .field(storedFieldName(field))
            .timeZone(DateTimeZone.getDefault())
            .dateHistogramInterval(interval);
}
 
源代码15 项目: jframe   文件: TestTransportClient.java
@Test
public void testAggregation() {
    SearchResponse sr = client.prepareSearch().setQuery(QueryBuilders.matchAllQuery())
            .addAggregation(AggregationBuilders.terms("agg1").field("field"))
            .addAggregation(AggregationBuilders.dateHistogram("agg2").field("birth").interval(DateHistogramInterval.YEAR)).execute().actionGet();

    // Get your facet results
    Terms agg1 = sr.getAggregations().get("agg1");
    // DateHistogram agg2 = sr.getAggregations().get("agg2");

    sr = client.prepareSearch("index1").setTerminateAfter(1000).get();
    if (sr.isTerminatedEarly()) {
        // We finished early
    }

    // sr = client.prepareSearch()
    // .addAggregation(
    // AggregationBuilders.terms("by_country").field("country")
    // .subAggregation(AggregationBuilders.dateHistogram("by_year")
    // .field("dateOfBirth")
    // .interval((DateHistogramInterval.YEAR)
    // .subAggregation(AggregationBuilders.avg("avg_children").field("children"))
    // )
    // ).execute().actionGet();

    MetricsAggregationBuilder aggregation = AggregationBuilders.max("agg").field("height");

}
 
 类所在包
 类方法
 同包方法