如何筛选嵌套聚合

时间:2015-02-18 14:10:10

标签: json elasticsearch

我尝试为不同的嵌套聚合应用不同的过滤器。有没有办法做到这一点?

"filter": {
    "nested": {
        "path": "hierarchy.productGroup",
        "filter": {
            "terms": {
                "hierarchy.productGroup.name": ["iPhone"]
            }
        }
    }
},
"aggs": {
    "category": {
        "nested": {
            "path": "hierarchy.productGroup"
        },
        "aggs": {
            "category": {
                "terms": {
                    "field": "hierarchy.productGroup.name"
                }
            }
        }
    },
    "color": {
        "filter": {
            "nested": {
                "path": "hierarchy.productGroup",
                "filter": {
                    "terms": {
                        "hierarchy.productGroup.name": ["iPhone"]
                    }
                }
            }
        },
        "nested": {
            "path": "specs.measurementsProduct.colorName"
        },
        "aggs": {

            "color": {
                "terms": {
                    "field": "specs.measurementsProduct.colorName.name"
                }
            }
        }
    }
}

当我运行此查询时,我收到以下错误:

Error: Parse Failure [Found two aggregation type definitions in [color]: [filter] and [nested]]];

我想让颜色聚合依赖于类别过滤器。

1 个答案:

答案 0 :(得分:0)

您忘记了一个键开始结束。 试试这个json:

{
    "filter": {
        "nested": {
            "path": "hierarchy.productGroup",
            "filter": {
                "terms": {
                    "hierarchy.productGroup.name": ["iPhone"]
                }
            }
        }
    },
    "aggs": {
        "category": {
            "nested": {
                "path": "hierarchy.productGroup"
            },
            "aggs": {
                "category": {
                    "terms": {
                        "field": "hierarchy.productGroup.name"
                    }
                }
            }
        },
        "color": {
            "filter": {
                "nested": {
                    "path": "hierarchy.productGroup",
                    "filter": {
                        "terms": {
                            "hierarchy.productGroup.name": ["iPhone"]
                        }
                    }
                }
            },
            "nested": {
                "path": "specs.measurementsProduct.colorName"
            },
            "aggs": {
                "color": {
                    "terms": {
                        "field": "specs.measurementsProduct.colorName.name"
                    }
                }
            }
        }
    }
}