Spring数据elasticsearch subaggregation不给父子项导致聚合结果

时间:2016-11-21 13:36:52

标签: java elasticsearch spring-data

我正在使用spring数据弹性支持并使用子聚合构造一个查询。当我调试并复制创建的查询的值并从sense plugin / postman执行时,我在2个字段上获得了正确的结果,即其他字段中的一个字段,但是程序返回的响应不包含其他字段,但包含只有聚合结果中的父级字段。

你能告诉我自己可能做错了吗?有关此

的更多信息,请参阅下文

文档框架就像

{
    ...
    "gender":"Men",
    "category":"Shirts",
    .....
} ,
{
    ...
    "gender":"Men",
    "category":"Pants",
    .....
},
{
    ...
    "gender":"Women",
    "category":"Pants",
    .....
} 

聚合中的预期输出类似于

...

"aggregations": {
      "gender": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 0,
         "buckets": [
            {
               "key": "Men",
               "doc_count": 4,
               "category": {
                  "buckets": [
                     {
                        "key": "shirts",
                        "doc_count": 2
                     },
                     {
                        "key": "pants",
                        "doc_count": 2
                     }
                     ]
                }
            },
            {
               "key": "Women",
               "doc_count": 2,
               "category": {              
                  "buckets": [
                     {
                        "key": "pants",
                        "doc_count": 2
                     }
                     ]
                }
            }
        ]
    }

 }
 ....

Java代码,用于添加术语聚合类型的子聚合。

        for (Object aggregationField : request.getAggregationFields()) {
            TermsBuilder termBuilder = AggregationBuilders.terms(aggregationField.toString())
                    .field(aggregationField.toString()).size(0);
            if(aggregationField.toString().equals("gender"))
            {
                TermsBuilder platformBuilder = AggregationBuilders.terms("category").field("category").size(0);
                termBuilder.subAggregation(platformBuilder);
            }               
            nativeSearchQueryBuilder.addAggregation(termBuilder);
        }

0 个答案:

没有答案