elasticsearch嵌套聚合在反向嵌套聚合中

时间:2016-04-27 07:36:57

标签: elasticsearch nested aggregation

Elasticsearch版本:2.3.1
JVM版本:1.8.0_66 / 25.66-b17
操作系统版本:Mac OS X 10.11.4

我无法在4级深度聚合场景中显示正确的值,其中前两个级别是嵌套的,第三个是reverse_nested,第四个是再次嵌套。

这是我的索引映射:

curl -XDELETE localhost:9200/orders-d
curl -XPUT localhost:9200/orders-d
curl -XPUT localhost:9200/orders-d/order-d/_mapping -d '{
    "order-d": {  
        "properties": {  
            "id": {  
                "type": "string"  
            },  
            "orderNumber": {  
                "type": "string"  
            },  
            "groupId": {  
                "type": "string"  
            },  
            "groupOrderNumber": {  
                "type": "string"  
            },  
            "dateCreated": {  
                "type": "date"  
            },  
            "dateUpdated": {  
                "type": "date"  
            },  
            "location": {  
                "type": "object"  
            },  
            "orderSubmitter": {  
                "type": "object"  
            },  
            "distributor": {  
                "type": "object"  
            },  
            "salesRep": {  
                "type": "object"  
            },  
            "status": {  
                "type": "string"  
            },  
            "total": {  
                "type": "double"  
            },  
            "isTTOrder": {  
                "type": "boolean"  
            },  
            "lineItems": {  
                "type": "nested",  
                "include_in_parent": true,  
                "properties": {  
                    "product": {  
                        "type": "object"  
                    },  
                    "category": {  
                        "type": "object"  
                    },  
                    "subCategory": {  
                        "type": "object"  
                    },  
                    "quantity": {  
                        "type": "double"  
                    },  
                    "unitPrice": {  
                        "type": "double"  
                    },  
                    "totalPrice": {  
                        "type": "double"  
                    },  
                    "pricedByUnitPrice": {  
                        "type": "double"  
                    }  
                }  
            }  
        }  
    }
}'

以下是文件:

curl -XPUT localhost:9200/orders-d/order-d/0 -d '{
                "id": "571652632a19085c008b4577",
                "orderNumber": "1617590686",
                "groupId": "571652632a19085c008b4578",
                "groupOrderNumber": "3485944627",
                "dateCreated": "2016-04-19",
                "dateUpdated": null,
                "location": {
                    "id": "54e53853505eb66b008b4569",
                    "name": "Andrews Diner"
                },
                "orderSubmitter": {
                    "id": "54e53853505eb66b008b4567",
                    "name": "Kostantino Plaitis"
                },
                "distributor": {
                    "id": "55c3879459ad0c63008b4569",
                    "name": "Performance Foodservice Metro NY"
                },
                "salesRep": null,
                "status": "pending",
                "total": 5410.21,
                "isTTOrder": true,
                "lineItems": [{
                    "product": {
                        "id": "55bfb445c440b26a008b4571",
                        "name": "Sabrett Sauerkraut 12 x 2 lb bags"
                    },
                    "category": {
                        "id": "53df845b3b8e77710e7b23ec",
                        "name": "Groceries & Dry Food"
                    },
                    "subCategory": {
                        "id": "53e1e8723b8e77a52b8b4586",
                        "name": "Other Sauces Dipping\/Condiments\/Savoury Toppings\/Savoury Spreads\/Marinades (Perishable)"
                    },
                    "quantity": 1,
                    "unitPrice": 25.24,
                    "totalPrice": 25.24,
                    "pricedByUnitPrice": 0
                }, {
                    "product": {
                        "id": "55bc219238c0376e008b4570",
                        "name": "Franks Red Hot Cayenne Pepper Sauce 4 x 1 gallon"
                    },
                    "category": {
                        "id": "53df845b3b8e77710e7b23ec",
                        "name": "Groceries & Dry Food"
                    },
                    "subCategory": {
                        "id": "53e1e8723b8e77a52b8b4606",
                        "name": "Other Sauces Dipping\/Condiments\/Savoury Toppings\/Savoury Spreads\/Marinades (Shelf Stable)"
                    },
                    "quantity": 1,
                    "unitPrice": 45.06,
                    "totalPrice": 45.06,
                    "pricedByUnitPrice": 0
                }, {
                    "product": {
                        "id": "56d76c41bd821fda008b459a",
                        "name": "Cereal, Classic Variety Pack, Kelloggs 1\/60 ct."
                    },
                    "category": {
                        "id": "53df845b3b8e77710e7b23ec",
                        "name": "Groceries & Dry Food"
                    },
                    "subCategory": {
                        "id": "53e1e8723b8e77a52b8b462d",
                        "name": "Grains\/Cereal - Ready to Eat - (Shelf Stable)"
                    },
                    "quantity": 1,
                    "unitPrice": 56.03,
                    "totalPrice": 56.03,
                    "pricedByUnitPrice": 0
                }]
            }'

curl -XPUT localhost:9200/orders-d/order-d/0 -d '{
                "id": "571652632a19085c008b4576",
                "orderNumber": "2041063294",
                "groupId": "571652632a19085c008b4578",
                "groupOrderNumber": "3485944627",
                "dateCreated": "2016-04-19",
                "dateUpdated": null,
                "location": {
                    "id": "54e53853505eb66b008b4569",
                    "name": "Andrews Diner"
                },
                "orderSubmitter": {
                    "id": "54e53853505eb66b008b4567",
                    "name": "Kostantino Plaitis"
                },
                "distributor": {
                    "id": "55cdeece0a41216c008b4583",
                    "name": "Driscoll Foods"
                },
                "salesRep": null,
                "status": "pending",
                "total": 7575.27,
                "isTTOrder": true,
                "lineItems": [{
                    "product": {
                        "id": "55ad05e08d28c36b008b456c",
                        "name": "Pepper 3000 pcs"
                    },
                    "category": {
                        "id": "53df845b3b8e77710e7b23ec",
                        "name": "Groceries & Dry Food"
                    },
                    "subCategory": {
                        "id": "53e1e8723b8e77a52b8b4582",
                        "name": "Herbs\/Spices (Shelf Stable)"
                    },
                    "quantity": 3,
                    "unitPrice": 8.95,
                    "totalPrice": 26.85,
                    "pricedByUnitPrice": 0
                }, {
                    "product": {
                        "id": "55b3a12f6b415c68008b4568",
                        "name": "Venice Maid Deluxe Corned Beef Hash 6 x 6 lb 10 oz"
                    },
                    "category": {
                        "id": "53df846c3b8e77710e7b23f7",
                        "name": "Meat"
                    },
                    "subCategory": {
                        "id": "54d8c56a279871b9078b4581",
                        "name": "Beef - Prepared\/Processed"
                    },
                    "quantity": 1,
                    "unitPrice": 59.75,
                    "totalPrice": 59.75,
                    "pricedByUnitPrice": 0
                }, {
                    "product": {
                        "id": "55b145798c26dc69008b4568",
                        "name": "Aladdin Bakers Sesame Bread Sticks 150 x 2 packs"
                    },
                    "category": {
                        "id": "53df845b3b8e77710e7b23ec",
                        "name": "Groceries & Dry Food"
                    },
                    "subCategory": {
                        "id": "53e1e8723b8e77a52b8b45b0",
                        "name": "Dried Breads (Shelf Stable)"
                    },
                    "quantity": 8,
                    "unitPrice": 15.5,
                    "totalPrice": 124,
                    "pricedByUnitPrice": 0
                }, {
                    "product": {
                        "id": "55ad074a8d28c36f008b456d",
                        "name": "Smuckers Breakfast Syrup 100 cups"
                    },
                    "category": {
                        "id": "53df845b3b8e77710e7b23ec",
                        "name": "Groceries & Dry Food"
                    },
                    "subCategory": {
                        "id": "53e1e8723b8e77a52b8b457d",
                        "name": "Syrup\/Treacle\/Molasses (Shelf Stable)"
                    },
                    "quantity": 10,
                    "unitPrice": 8.95,
                    "totalPrice": 89.5,
                    "pricedByUnitPrice": 0
                }]
            }'

这是我的问题:

curl -XPOST localhost:9200/orders-d/_search -d '{
        "from": 0,
        "size": 0,
        "aggregations": {
            "totalLineItems": {
                "aggs": {
                    "totalLineItems": {
                        "terms": {
                            "field": "lineItems.category.id",
                            "size": 0
                        },
                        "aggs": {
                            "totalLineItems": {
                                "terms": {
                                    "field": "lineItems.product.id",
                                    "size": 0
                                },
                                "aggs": {
                                    "totalLineItems": {
                                        "aggs": {
                                            "totalLineItems": {
                                                "terms": {
                                                    "field": "distributor.id",
                                                    "size": 0
                                                },
                                                "aggs": {
                                                    "totalLineItems": {
                                                        "aggs": {
                                                            "totalLineItems": {
                                                                "sum": {
                                                                    "field": "lineItems.totalPrice"
                                                                }
                                                            }
                                                        },
                                                        "nested": {
                                                            "path": "lineItems"
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "reverse_nested": {}
                                    }
                                }
                            }
                        }
                    }
                },
                "nested": {
                    "path": "lineItems"
                }
            }
        },
        "query": {
            "bool": {
                "must": [{
                    "range": {
                        "dateCreated": {
                            "format": "yyyy-MM-dd",
                            "gte": "2016-01-01",
                            "lte": "2016-04-30"
                        }
                    }
                }]
            }
        }
    }'

...这是我的结果:

{
    "took": 8,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 0.0,
        "hits": []
    },
    "aggregations": {
        "totalLineItems": {
            "doc_count": 4,
            "totalLineItems": {
                "doc_count_error_upper_bound": 0,
                "sum_other_doc_count": 0,
                "buckets": [{
                    "key": "53df845b3b8e77710e7b23ec",
                    "doc_count": 3,
                    "totalLineItems": {
                        "doc_count_error_upper_bound": 0,
                        "sum_other_doc_count": 0,
                        "buckets": [{
                            "key": "55ad05e08d28c36b008b456c",
                            "doc_count": 1,
                            "totalLineItems": {
                                "doc_count": 1,
                                "totalLineItems": {
                                    "doc_count_error_upper_bound": 0,
                                    "sum_other_doc_count": 0,
                                    "buckets": [{
                                        "key": "55cdeece0a41216c008b4583",
                                        "doc_count": 1,
                                        "totalLineItems": {
                                            "doc_count": 4,
                                            "totalLineItems": {
                                                "value": 300.1
                                            }
                                        }
                                    }]
                                }
                            }
                        }, {
                            "key": "55ad074a8d28c36f008b456d",
                            "doc_count": 1,
                            "totalLineItems": {
                                "doc_count": 1,
                                "totalLineItems": {
                                    "doc_count_error_upper_bound": 0,
                                    "sum_other_doc_count": 0,
                                    "buckets": [{
                                        "key": "55cdeece0a41216c008b4583",
                                        "doc_count": 1,
                                        "totalLineItems": {
                                            "doc_count": 4,
                                            "totalLineItems": {
                                                "value": 300.1
                                            }
                                        }
                                    }]
                                }
                            }
                        }, {
                            "key": "55b145798c26dc69008b4568",
                            "doc_count": 1,
                            "totalLineItems": {
                                "doc_count": 1,
                                "totalLineItems": {
                                    "doc_count_error_upper_bound": 0,
                                    "sum_other_doc_count": 0,
                                    "buckets": [{
                                        "key": "55cdeece0a41216c008b4583",
                                        "doc_count": 1,
                                        "totalLineItems": {
                                            "doc_count": 4,
                                            "totalLineItems": {
                                                "value": 300.1
                                            }
                                        }
                                    }]
                                }
                            }
                        }]
                    }
                }, {
                    "key": "53df846c3b8e77710e7b23f7",
                    "doc_count": 1,
                    "totalLineItems": {
                        "doc_count_error_upper_bound": 0,
                        "sum_other_doc_count": 0,
                        "buckets": [{
                            "key": "55b3a12f6b415c68008b4568",
                            "doc_count": 1,
                            "totalLineItems": {
                                "doc_count": 1,
                                "totalLineItems": {
                                    "doc_count_error_upper_bound": 0,
                                    "sum_other_doc_count": 0,
                                    "buckets": [{
                                        "key": "55cdeece0a41216c008b4583",
                                        "doc_count": 1,
                                        "totalLineItems": {
                                            "doc_count": 4,
                                            "totalLineItems": {
                                                "value": 300.1
                                            }
                                        }
                                    }]
                                }
                            }
                        }]
                    }
                }]
            }
        }
    }
}

从结果中可以看出,totalLineItems的每个细分的所有聚合值都具有相同的确切值。这显然是不正确的。

我做错了什么,它是一个错误,还是嵌套在反向嵌套中不受支持?

0 个答案:

没有答案