Вложенное агрегирование неожиданного поведения
У меня проблема с этим запросом:
{
"_source": [
"id",
"name_cs",
"producer_id",
"producer_model_serie_id"
],
"size": 10000,
"query": {
"bool": {
"must": [
{
"terms": {
"producer_id": [
44
]
}
},
{
"terms": {
"producer_model_serie_id": [
308
]
}
}
]
}
},
"aggs": {
"price": {
"filter": {
"bool": {
"must": [
{
"terms": {
"producer_id": [
44
]
}
},
{
"terms": {
"producer_model_serie_id": [
308
]
}
}
]
}
},
"aggs": {
"shop_branch_data": {
"nested": {
"path": "shop_branch_data"
},
"aggs": {
"shop_branch": {
"filter": {
"term": {
"shop_branch_data.shop_branch_id": 1
}
},
"aggs": {
"price": {
"nested": {
"path": "shop_branch_data.price"
},
"aggs": {
"price_group": {
"filter": {
"bool": {
"must_not": {
"exists": {
"field": "shop_branch_data.price.price_group_id"
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
это возвращает только 1 результат (см. last doc_count):
{
"took": 7,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 3,
"hits": [
{
"_index": "super-system-product_filterer",
"_type": "product_filterer",
"_id": "19363",
"_score": 3,
"_source": {
"producer_model_serie_id": 308,
"name_cs": "skartovacka-kobra-1-ss7-e-s",
"producer_id": 44,
"id": 19363
}
},
{
"_index": "super-system-product_filterer",
"_type": "product_filterer",
"_id": "19362",
"_score": 3,
"_source": {
"producer_model_serie_id": 308,
"name_cs": "skartovacka-kobra-1-ss6-e-s",
"producer_id": 44,
"id": 19362
}
},
{
"_index": "super-system-product_filterer",
"_type": "product_filterer",
"_id": "19360",
"_score": 3,
"_source": {
"producer_model_serie_id": 308,
"name_cs": "skartovacka-kobra-1-cc4-e-s",
"producer_id": 44,
"id": 19360
}
},
{
"_index": "super-system-product_filterer",
"_type": "product_filterer",
"_id": "19361",
"_score": 3,
"_source": {
"producer_model_serie_id": 308,
"name_cs": "skartovacka-kobra-1-ss4-e-s",
"producer_id": 44,
"id": 19361
}
}
]
},
"aggregations": {
"price": {
"doc_count": 4,
"shop_branch_data": {
"doc_count": 8,
"shop_branch": {
"doc_count": 4,
"price": {
"doc_count": 6,
"price_group": {
"doc_count": 1
}
}
}
}
}
}
}
но если я удаляю первую агрегацию (названную цену) следующим образом:
{
"_source": [
"id",
"name_cs",
"producer_id",
"producer_model_serie_id"
],
"size": 10000,
"query": {
"bool": {
"must": [
{
"terms": {
"producer_id": [
44
]
}
},
{
"terms": {
"producer_model_serie_id": [
308
]
}
}
]
}
},
"aggs": {
"shop_branch_data": {
"nested": {
"path": "shop_branch_data"
},
"aggs": {
"shop_branch": {
"filter": {
"term": {
"shop_branch_data.shop_branch_id": 1
}
},
"aggs": {
"price": {
"nested": {
"path": "shop_branch_data.price"
},
"aggs": {
"price_group": {
"filter": {
"bool": {
"must_not": {
"exists": {
"field": "shop_branch_data.price.price_group_id"
}
}
}
}
}
}
}
}
}
}
}
}
}
Результат в порядке:
{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 3,
"hits": [
{
"_index": "super-system-product_filterer",
"_type": "product_filterer",
"_id": "19363",
"_score": 3,
"_source": {
"producer_model_serie_id": 308,
"name_cs": "skartovacka-kobra-1-ss7-e-s",
"producer_id": 44,
"id": 19363
}
},
{
"_index": "super-system-product_filterer",
"_type": "product_filterer",
"_id": "19362",
"_score": 3,
"_source": {
"producer_model_serie_id": 308,
"name_cs": "skartovacka-kobra-1-ss6-e-s",
"producer_id": 44,
"id": 19362
}
},
{
"_index": "super-system-product_filterer",
"_type": "product_filterer",
"_id": "19360",
"_score": 3,
"_source": {
"producer_model_serie_id": 308,
"name_cs": "skartovacka-kobra-1-cc4-e-s",
"producer_id": 44,
"id": 19360
}
},
{
"_index": "super-system-product_filterer",
"_type": "product_filterer",
"_id": "19361",
"_score": 3,
"_source": {
"producer_model_serie_id": 308,
"name_cs": "skartovacka-kobra-1-ss4-e-s",
"producer_id": 44,
"id": 19361
}
}
]
},
"aggregations": {
"shop_branch_data": {
"doc_count": 8,
"shop_branch": {
"doc_count": 4,
"price": {
"doc_count": 24,
"price_group": {
"doc_count": 4
}
}
}
}
}
}
в чем проблема? Результат должен быть таким же, но есть разница в цене doc_count. Я понятия не имею, что должно быть не так, потому что эта часть запроса одинакова для них обоих. Отправленный мной запрос является лишь частью гораздо большего запроса, поэтому я не могу использовать второй запрос.
Спасибо за любой совет