elasticsearch,spring-data,Java,elasticsearch,Spring Data" /> elasticsearch,spring-data,Java,elasticsearch,Spring Data" />

Java Spring数据elasticsearch子聚合未在聚合结果中提供父子结果

Java Spring数据elasticsearch子聚合未在聚合结果中提供父子结果,java,elasticsearch,spring-data,Java,elasticsearch,Spring Data,我正在使用spring数据elastisearch并构造了一个带有子聚集的查询。当我调试和复制所创建查询的值并从sense plugin/postman执行时,我通过对两个字段(即一个字段在另一个字段中)的子聚合得到正确的结果,但是程序返回的响应不包含另一个字段在另一个字段中,而只包含聚合结果中的父级字段 你能告诉我我可能做错了什么吗。请参阅下文,了解更多信息 文档骨架类似于 { ... "gender":"Men", "category":"Shirts", .

我正在使用spring数据elastisearch并构造了一个带有子聚集的查询。当我调试和复制所创建查询的值并从sense plugin/postman执行时,我通过对两个字段(即一个字段在另一个字段中)的子聚合得到正确的结果,但是程序返回的响应不包含另一个字段在另一个字段中,而只包含聚合结果中的父级字段

你能告诉我我可能做错了什么吗。请参阅下文,了解更多信息

文档骨架类似于

{
    ...
    "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
                     }
                     ]
                }
            }
        ]
    }

 }
 ....
等等

聚合中的预期输出如下

{
    ...
    "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);
        }

您可能应该粘贴Java代码,这样会更容易帮助您。@Val谢谢,我已经编辑了问题并添加了更多信息。如果我能正确地解释自己,请告诉我您可能应该粘贴Java代码,这样会更容易帮助您。@Val谢谢,我已经编辑了问题并添加了更多信息。请让我知道我是否能正确地解释我自己