悟空,拿我的打狗棒来

Elasticsearch java api 怎么添加同级聚合?

Elasticsearch | 作者 zzzx081135 | 发布于2019年04月10日 | 阅读数:1591

聚合语句:
"aggs": {
    "users": {
      "terms": {
        "size": 5000,
        "field": "userId"
      },
      "aggs": {
        "resourceIds": {
          "cardinality": {
            "field": "resourceId"
          }
        }
      }
    },
    "read_count": {
      "sum_bucket": {
        "buckets_path": "users>resourceIds.value"
      }
    },
    "user_count": {
      "cardinality": {
        "field": "userId"
      }
    },
    "read_time": {
      "sum": {
        "field": "duration"
      }
    }
  }
==============================================
JAVA api
TermsAggregationBuilder ab = AggregationBuilders.terms("users").field("userId").size(5000)
                .subAggregation(AggregationBuilders.cardinality("resourceIds").field("resourceId"))
                .subAggregation(new SumBucketPipelineAggregationBuilder("read_count", "users>resourceIds.value"))
                .subAggregation(AggregationBuilders.cardinality("user_count").field("userId"))
                .subAggregation(AggregationBuilders.sum("read_time").field("duration"));
 
请问这个api只能添加subAggregation,请问怎么添加同级的聚合?
因为read_count、user_count、read_time与users处于同一等级
 
已邀请:

Dramecj

赞同来自: zzzx081135

SearchResponse response = esClient.prepareSearch(index)
.addAggregation(AggregationBuilders.terms("read_count").field("read_count.keyword"))
.addAggregation(AggregationBuilders.terms("user_count").field("user_count.keyword"))
.addAggregation(AggregationBuilders.terms("read_time").field("read_time.keyword"))
.addAggregation(AggregationBuilders.terms("users").field("users.keyword"))

要回复问题请先登录注册