Вложенное агрегирование неожиданного поведения

У меня проблема с этим запросом:

{
  "_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. Я понятия не имею, что должно быть не так, потому что эта часть запроса одинакова для них обоих. Отправленный мной запрос является лишь частью гораздо большего запроса, поэтому я не могу использовать второй запрос.

Спасибо за любой совет

0 ответов

Другие вопросы по тегам