SQL to Elasticsearch java code
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQL to Elasticsearch java code,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4920字,纯文字阅读大概需要8分钟。
内容图文
![SQL to Elasticsearch java code](/upload/InfoBanner/zyjiaocheng/482/f8a7235de3fb45d5a8937dfd1dc0f870.jpg)
对应的java code:
SearchRequestBuilder searchReq = client.prepareSearch("sample_index"); searchReq.setTypes("sample_types"); TermsBuilder termsb = AggregationBuilders.terms("my_fieldA").field("fieldA").size(100); BoolFilterBuilder bf = FilterBuilders.boolFilter(); TermFilterBuilder tf_fieldC = FilterBuilders.termFilter("fieldC","hoge"); TermFilterBuilder tf_fieldD = FilterBuilders.termFilter("fieldD","huga"); bf.must(tf_fieldC); bf.must(tf_fieldD); RangeFilterBuilder rangefieldBFilter = FilterBuilders.rangeFilter("fieldB") .gt(10) .lt(100); searchReq.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(), FilterBuilders.andFilter(bf, rangefieldBFilter))).addAggregation( termsb); SearchResponse searchRes = searchReq.execute().actionGet(); Terms fieldATerms = searchRes.getAggregations().get("my_fieldA"); for (Terms.Bucket filedABucket : fieldATerms.getBuckets()) { //fieldA String fieldAValue = filedABucket.getKey(); //COUNT(fieldA) long fieldACount = filedABucket.getDocCount(); }
2. 按某个field 和 date group by 并查询sum,时间统计图,时间间隔是1天。
SELECT DATE(create_at), fieldA, SUM(fieldB) from table group by DATE(create_at), fieldA;
对应的java code:
SearchRequestBuilder searchReq = client.prepareSearch("sample_index"); searchReq.setTypes("sample_types"); 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(); } }
3. 按两个field group by并查询sum
SELECT fieldA, fieldC, SUM(fieldB) from table group by fieldA, fieldC;
对应的java code:
SearchRequestBuilder searchReq = client.prepareSearch("sample_index"); searchReq.setTypes("sample_types"); TermsBuilder termsb_fa = AggregationBuilders.terms("my_fieldA").field("fieldA").size(100); TermsBuilder termsb_fc = AggregationBuilders.terms("my_fieldC").field("fieldC").size(50); termsb_fc.subAggregation(AggregationBuilders.sum("my_sum_fieldB").field("fieldB")); termsb_fa.subAggregation(termsb_fc) searchReq.setQuery(QueryBuilders.matchAllQuery()).addAggregation(termsb_fa); SearchResponse searchRes = searchReq.execute().actionGet(); Terms fieldATerms = searchRes.getAggregations().get("my_fieldA"); for (Terms.Bucket filedABucket : fieldATerms.getBuckets()) { //fieldA String fieldAValue = filedABucket.getKey(); Terms fieldCTerms = filedABucket.getAggregations().get("my_fieldC"); for (Terms.Bucket filedCBucket : fieldCTerms.getBuckets()) { //fieldC String fieldCValue = filedCBucket.getKey(); //SUM(fieldB) Sum sumagg = filedCBucket.getAggregations().get("my_sum_fieldB"); long sumFieldB = (long)sumagg.getValues(); } }
4. 按某个filed group by 并查询count sum 和 average
SELECT fieldA, COUNT(fieldA), SUM(fieldB), AVG(fieldB) from table group by fieldA;
对应的java code:
SearchRequestBuilder searchReq = client.prepareSearch("sample_index"); searchReq.setTypes("sample_types"); TermsBuilder termsb = AggregationBuilders.terms("my_fieldA").field("fieldA").size(100); termsb.subAggregation(AggregationBuilders.sum("my_sum_fieldB").field("fieldB")); termsb.subAggregation(AggregationBuilders.avg("my_avg_fieldB").field("fieldB")); searchReq.setQuery(QueryBuilders.matchAllQuery()).addAggregation(termsb); SearchResponse searchRes = searchReq.execute().actionGet(); Terms fieldATerms = searchRes.getAggregations().get("my_fieldA"); for (Terms.Bucket filedABucket : fieldATerms.getBuckets()) { //fieldA String fieldAValue = filedABucket.getKey(); //COUNT(fieldA) long fieldACount = filedABucket.getDocCount(); //SUM(fieldB) Sum sumagg = filedABucket.getAggregations().get("my_sum_fieldB"); long sumFieldB = (long)sumagg.getValues(); //AVG(fieldB) Avg avgagg = filedABucket.getAggregations().get("my_avg_fieldB"); double avgFieldB = avgagg.getValues(); }
SQL to Elasticsearch java code
标签:代码 set 需要 dex add long histogram size class
本文系统来源:http://www.cnblogs.com/luxiaoxun/p/6826211.html
内容总结
以上是互联网集市为您收集整理的SQL to Elasticsearch java code全部内容,希望文章能够帮你解决SQL to Elasticsearch java code所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。