我正在使用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);
}