Я немного нового в ES, и я не знаю, как сделать следующее:Совокупные за последние документы в elasticsearch
Я запустить поиск с запросом, который будет содержать только несколько «должен» параметры ,
Затем также несколько агрегатов, например. процентиль, термин bucketing и т. д.
Но для агрегаций я хочу только его, например, агрегировать по первым 1000 документам (которые, надеюсь, затем будут забиты и заказаны по счету).
Идея состоит в том, что я хочу, чтобы агги для определенных терминов, но если их недостаточно, заполните его - но ограничьте определенное максимальное число для агрегирования. Из документов видно, что size
- это количество возвращаемых документов, а не размер, который будет использоваться для aggs (мне не нужны хиты, только aggs).
Итак, как мне это сделать? Есть ли вложенный/следующий запрос? Должен ли я pipeline
что-то, например. получить поиск 1k docs, а затем agg?
Было бы идеально, если бы документы можно было сначала отсортировать по метке времени, в которой она была проиндексирована - так что документы, которые используются для «заполнения», являются последними, но AFAIK это невозможно?
Заполнить его?
«заполнить» означает, что у меня есть 100 документов для одного указанного поля «обязательно». Затем мне все еще нужны другие 900 документов для требуемого размера результата 1k, чтобы заполнить его (чтобы заполнить его до необходимого числа). Поэтому вместо использования фильтра я видел «комбинированные запросы» в документах, и я думаю, что использование параметра «должен» будет достаточным.
Можете уточнить, что вы подразумеваете под словом «заполните его»? Возможно, включив пример json того, что вы ожидаете? – Phil
@Phil отредактировал вопрос – Tjorriemorrie
это может помочь. Фильтр с ограничением - http://stackoverflow.com/a/29127328/689625 – jay