当前位置:   article > 正文

Spring-data-Elasticsearch聚合查询_spring-data-elasicsearch 4.x aggregation

spring-data-elasicsearch 4.x aggregation
  1. 使用ElasticsearchRepository的话可能会方便,但一些复杂的好像就没法做。
  2. 比如:高亮,聚合查询。
  3. 聚合查询,比如,mysql的group by..查商品有多少个种类等等...
  4. 还得用。ElasticsearchTemplate
  5. 使用spring boot 的话直接@Autowired注入就可以使用了

ElasticsearchTemplate使用聚合例子:

  1. NativeSearchQueryBuilder builder=new NativeSearchQueryBuilder();
  2. // -------- terms-分组.这个字段有多少种类的值
  3. ValuesSourceAggregationBuilder s=AggregationBuilders.terms("自定义").field("字段");
  4. builder.addAggregation(s);
  5. Aggregations aggregations= template.query(builder.build(), new ResultsExtractor<Aggregations>() {
  6. @Override
  7. public Aggregations extract(SearchResponse searchResponse) {
  8. return searchResponse.getAggregations();
  9. }
  10. });
  11. Map<String, Aggregation> stringAggregationMap=aggregations.asMap();
  12. System.out.println(stringAggregationMap.get("刚刚自定义的"));

执行结果:

  1. {"group_jxh":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[
  2. {"key":"哈哈","doc_count":2}, -->哈哈这个值有两个
  3. {"key":"吴彦祖","doc_count":1},
  4. {"key":"宋智孝","doc_count":1},
  5. {"key":"李光洙","doc_count":1},
  6. {"key":"江名才","doc_count":1},
  7. {"key":"江训亚","doc_count":1}
  8. ]}}

刚刚上面只是:trems的举例,还有一些方法:

  1. 1)统计某个字段的数量
  2. ValueCountBuilder vcb= AggregationBuilders.count("自定义").field("uid");
  3. 2)去重统计某个字段的数量(有少量误差)
  4. CardinalityBuilder cb= AggregationBuilders.cardinality("distinct_count_uid").field("uid");
  5. 3)聚合过滤
  6. FilterAggregationBuilder fab= AggregationBuilders.filter("uid_filter").filter(QueryBuilders.queryStringQuery("uid:001"));
  7. 4)按某个字段分组
  8. TermsBuilder tb= AggregationBuilders.terms("group_name").field("name");
  9. 5)求和
  10. SumBuilder sumBuilder= AggregationBuilders.sum("sum_price").field("price");
  11. 6)求平均
  12. AvgBuilder ab= AggregationBuilders.avg("avg_price").field("price");
  13. 7)求最大值
  14. MaxBuilder mb= AggregationBuilders.max("max_price").field("price");
  15. 8)求最小值
  16. MinBuilder min= AggregationBuilders.min("min_price").field("price");
  17. 9)按日期间隔分组
  18. DateHistogramBuilder dhb= AggregationBuilders.dateHistogram("dh").field("date");
  19. 10)获取聚合里面的结果
  20. TopHitsBuilder thb= AggregationBuilders.topHits("top_result");
  21. 11)嵌套的聚合
  22. NestedBuilder nb= AggregationBuilders.nested("negsted_path").path("quests");
  23. 12)反转嵌套
  24. AggregationBuilders.reverseNested("res_negsted").path("kps ");

来自

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/785755
推荐阅读
相关标签
  

闽ICP备14008679号