ElasticSearch怎么同时对两个字段做sum聚合查询

想使用ES作为数据库,使用java api调用,需要group by一个Field,同时对多个Field做sum、avg等等,但是发现只有TermsBuilder有subAggregation方法,可以添加子聚合,SumBuilder,AvgBuilder都不能添加subAggregation?

使用SQL语句表达类似于:

select field1,sum(field2),sum(field3) from table group by field1

有人遇到过这种情况吗,是怎么解决的?

阅读 22.9k
3 个回答
新手上路,请多包涵
SearchRequestBuilder srb = client.prepareSearch(indexName)
                    .setTypes(typeName)
                    .setSearchType(SearchType.QUERY_THEN_FETCH);
...
TermsBuilder field1Terms = AggregationBuilders.terms("group_by_field1").field("field1").size(0);
SumBuilder field2Sum = AggregationBuilders.sum("sum_field2").field("field2");
SumBuilder field3Sum = AggregationBuilders.sum("sum_field3").field("field3");
field1Terms.subAggregation(field2Sum ).subAggregation(field3Sum );
...
srb.addAggregation(pIdTerms);
...
SearchResponse sr = srb.execute().actionGet();
...

首先先感谢大牛,分享技术,我是今天第一次使用es,有很多不会的还需多多学习。
请问srb.addAggregation(pIdTerms); pIdTerms字段 怎么理解, 如何使用,
如果可以请将详细代码,发送到ybtfl8081@163.com邮箱,感激不尽,,

新手上路,请多包涵

麻烦问下 后来解决了么 怎么解决的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进