elasticsearch 高级聚合 ParentAggregationBuilder(聚合父表中的数据)

背景

elasticsearch 中可以实现通过父子关联查询(parent-child join),在新的版本中支持根据子表查询,然后根据父表聚合。
当然也有人认为可以直接转换查询条件,调整父子查询。
但现实中,为了保证查询条件的一致性,比如,查询条件主体就是子表,如果调整查询条件会导致列表与统计数据条件不一致。

代码

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
 //要注意此处的parent类型应该是子表,具体原因没搞明白
 ParentAggregationBuilder parentAggregationBuilder = JoinAggregationBuilders
          .parent("child_type","child_type");
 SumAggregationBuilder sumAgg = AggregationBuilders.sum("count").field("count");
 parentAggregationBuilder.subAggregation(sumAgg);
  SearchResponse searchResponse = constructorEsUtil
                .getContractRestClientSearchResponse(realmId, "child_type",
                                                     boolQuery,
                                                     parentAggregationBuilder);
                                                     //解析
            Parent parent = searchResponse.getAggregations().get(ContractIndexConstant.TYPE_REPAYMENT);
            Map<String, Aggregation> map = parent.getAggregations().getAsMap();
            

总结

上面的统计可以实现,根据子表条件查询,对父表中count求和。
elasticsearch 不仅查询功能强大,统计功能也在完善,当然繁琐的统计,性能就比较差。
使用此统计需要比较新的版本,6.8中已经存在对应的API.


http://www.niftyadmin.cn/n/860856.html

相关文章

Kafka 根据指定的Partition与offset 消费数据

背景 Kafka 本身可以存储数据&#xff0c;在实际的开发中&#xff0c;经常遇到需要重新消费数据。Kafka 消费方式非常的灵活&#xff0c;可以指定Partition&#xff0c;offset 进行重新消费 代码 Properties props new Properties();props.put("bootstrap.servers"…

elasticsearch 添加,修改_mapping

创建索引及_mapping PUT test_mapping {"mappings": {"test": {"dynamic_templates": [{"string_fields": {"match": "*","match_mapping_type": "string","mapping": {"ana…

下一代开发利器 jetbrains fleet 开放试用申请了

申请回复 jetbrains fleet 11 月 29 日&#xff0c;JetBrains 首席布道师 Hadi Hariri 在官方博客发文&#xff0c;正式宣布 Fleet 编辑器的到来。 官网

Java BigDecimal中的大于,等于、小于计算原理

BigDecimal BigDecimal 是Java 中精度计算中常用的类。带有精度不能直接进行>,<,计算。 大于&#xff0c;等于&#xff0c;小于判断 等于 BigDecimal b1 BigDecimal.ZERO;BigDecimal b2 BigDecimal.ZERO;System.out.println(b2.compareTo(b1));//输出结果 0if (b2.c…

Spring Boot @ExceptionHandler 精确匹配优先(按照深度比较)

ControllerAdvice 中 使用ExceptionHandler 处理全局异常 Slf4j Component ControllerAdvice public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {ResponseBodyExceptionHandler(value Throwable.class)public ResponseEntity<Object> exce…

VSCode java format file(eclipse )

VSCode Java 代码格式化 统一使用eclipse format 格式文件。 settings.json配置 "[java]": {"editor.defaultFormatter": "redhat.java"},"java.format.enabled": true,"java.format.settings.url": "D:\\work\\docu…

VSCode Java 代码格式化 统一使用eclipse format 格式文件

settings.json配置 css"[java]": {"editor.defaultFormatter": "redhat.java"},"java.format.enabled": true,"java.format.settings.url": "D:\\work\\document\\公司环境配置\\Java编码规范-附件\\eclipse\\formatte…

java 8 list collectors to map 保持顺序的两种方案

Java 8 list 转 map 保持顺序 思路直接转换为LinkedHashMap。 User user new User();user.setAccountId("1");List<User> users Lists.newArrayList();User user2 new User();user2.setAccountId("2");User user3 new User();user3.setAccountI…