Как запустить агрегацию терминов для первых результатов `n`

Я выполняю агрегирование терминов для документов, хранящихся в индексе. Мои документы - это продукты, и я собираю название продукта.

# GET /products/_search/
{
  "query": {
    "match": { "name": "iphone 5" }
  },
  "aggs": {
     "brands_name": {
       "terms": {
         "field": "brand",
         "size": 10
       }
     } 
  }
}

Как и ожидалось, результаты - это ведро брендов и ихdoc_counts.

{
   "aggregations": {
      "brands_name": {
         "doc_count_error_upper_bound": 577,
         "sum_other_doc_count": 239924,
         "buckets": [
            {
               "key": "Irrelevant Brand 1",
               "doc_count": 8539
            },
            {
               "key": "Irrelevant Brand 2",
               "doc_count": 7616
            },
            ...
         ]
      }
   }
}

Количество совпадений может быть довольно высоким для общих поисков. В моем случае, только первые результаты с высокой оценкой являются релевантными. Поскольку агрегация выполняется по всем хитам (даже по тем, у которых низкие оценки), обычные бренды имеют тенденцию всегда присутствовать в списке сегментов (ихdoc_count является высоким), хотя они могут не соответствовать соответствующему результату.

Я хочу подтолкнуть к тому, что я считаю соответствующими брендами.

Моя идея состоит в том, чтобы охватить агрегаты только первымn документы (это может бытьn по результатам или по осколкам, это не имеет значения). Мне пока не удалось это сделать.

Я пробовал разные подходы, которые не работают для меня:

используя отфильтрованный запрос спредельный фильтр, Это не работает, так как это может исключить документы с высокой оценкойиспользованиеmin_score, Хотя это позволяет запускать агрегирование в области, содержащей только высокие оценки, это на самом деле не является гибким.агрегация top_hits, Он не допускает подзапросов, что делает невозможным выполнение агрегирования терминов для самых популярных запросов.агрегировать результаты по баллу сфильтр гистограммы: это может сработать, разделив результаты по небольшим интервалам, а затем уменьшив результаты до достижения приблизительноn документы. Но он чувствует себя немного грязным и упругимкажется, еще не поддерживает десятичные интервалы

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

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