ES的嵌套查询和嵌套聚合

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的方式进行聚合----暂无解决方案

 

你可能感兴趣的:(elasticsearch)