1.想要实现嵌套查询和嵌套聚合,首先需要在索引里面设置某个属性是嵌套类型(一般是List)-----type=nested
2.API的demo-嵌套查询---(使用场景:需要根据list中的两个字段以and的关系进行查询)
// 构造布尔查询
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.filter(QueryBuilders.termQuery("holdAgentList.agentId", agentId));
//
QueryBuilder nestedQuery = QueryBuilders.nestedQuery("holdAgentList",
QueryBuilders.boolQuery().filter(QueryBuilders.termQuery("holdAgentList.agentId", agentId))
.filter(QueryBuilders.termQuery("holdAgentList.isPromiseGuide", 0)), ScoreMode.None);
boolQueryBuilder.filter(QueryBuilders.boolQuery().filter(nestedQuery))
.filter(QueryBuilders.termQuery("onOffStatus", 3));
// 构建查询参数
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()
.query(boolQueryBuilder)
.from(0)
.size(0);
3.嵌套聚合中,以list中的多字段用and的方式进行聚合----暂无解决方案