Агрегация по лучшим результатам N

Проблема:

Если я ищу «iphone», я получаю 400 результатов продукта, и у меня есть агрегация по категориям продуктов, которая возвращает три верхние категории в наборе результатов.

Эти категории будут включать смартфоны, чехлы для телефонов и аксессуары для мобильных телефонов.

Если я ищу «iphone 6», я получаю 1400 результатов из-за дополнительных «6» результатов поиска для других продуктов. Агрегация категорий продуктов теперь возвращает 3 верхние категории для всех этих результатов.

В топ-3 категории продуктов теперь входят все, от кабелей до компьютерных мониторов.

Что мне нужно сделать, так это получить 3 верхние категории для 100 лучших результатов.

Что я пробовал:

Я пытался использоватьtop_hits агрегация в агрегации высшей категории, но при этом возвращаются только топовые продукты в каждой категории.

Что-то вроде этого:

{
    "aggs": {

        "product_categories": {
            "terms": {
                "field": "product_category",
                "size": 10,
            }
        }        
        "aggs": {
            "top-categories": {
                "top_hits": {
                    "size" : 3
                }
            }
        }
    }
}

Я также пытался создатьtop_hits агрегация с субагрегацией внутри, чтобы получить верхние категории, но это тоже не работает.

{
    "aggs": {
        "top-categories": {
            "top_hits": {
                "size" : 100
            }
            "aggs": {
                "product_categories": {
                    "terms": {
                        "field": "product_category",
                        "size": 3,
                    }
                }
            }
        }
    }
}

Может кто-нибудь помочь мне с этой проблемой?

Ответы на вопрос(3)

Ваш ответ на вопрос