Created
September 8, 2015 06:30
-
-
Save kakakazuma/e1849cc9ab47ea869a08 to your computer and use it in GitHub Desktop.
elasticsearch aggregation sample by java. date histogram.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
ES Aggregation to get result same as result from this SQL | |
SELECT | |
DATE(create_at),fieldA,SUM(fieldB) | |
from table | |
group by DATE(create_at),fieldA; | |
*/ | |
SearchRequestBuilder searchReq = client.prepareSearch("sample_index"); | |
searchReq.setTypes("sample_types"); | |
//例えばInterval.minutes(15)にすると15分ごとの集計ができる | |
DateHistogramBuilder dhb = AggregationBuilders.dateHistogram("my_datehistogram").field("create_at").interval(DateHistogram.Interval.days(1)); | |
TermsBuilder termsb_fa = AggregationBuilders.terms("my_fieldA").field("fieldA").size(100); | |
termsb_fa.subAggregation(AggregationBuilders.sum("my_sum_fieldB").field("fieldB")); | |
dhb.subAggregation(termsb_fa) | |
searchReq.setQuery(QueryBuilders.matchAllQuery()).addAggregation(dhb); | |
SearchResponse searchRes = searchReq.execute().actionGet(); | |
DateHistogram dateHist = searchRes.getAggregations().get("my_datehistogram"); | |
for (DateHistogram.Bucket dateBucket : dateHist.getBuckets()) { | |
//DATE(create_at) | |
String create_at = dateentry.getKey(); | |
Terms fieldATerms = dateBucket.getAggregations().get("my_fieldA"); | |
for (Terms.Bucket filedABucket : fieldATerms.getBuckets()) { | |
//fieldA | |
String fieldAValue = filedABucket.getKey(); | |
//SUM(fieldB) | |
Sum sumagg = filedABucket.getAggregations().get("my_sum_fieldB"); | |
long sumFieldB = (long)sumagg.getValues(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment