Я запускаю фильтр elasticsearch с большим №. (~ 10 миллионов хитов) результатов. Мой from+size
max - это по умолчанию (10 000 хитов). Я хотел бы агрегировать на основе поля и возвращать все хиты для фильтра во всех ведрах (а не только числа).ES: Ведро agg + top_hits + прокрутка? Как вернуть все образы (больше, чем `size + from` max) в ведрах?
Я знаю, что могу использовать top_hits
, чтобы получить фактические документы в каждом ковше (ElasticSearch: retriving documents belonging to buckets), но я думаю, мне нужно прокрутить, чтобы получить их все (чтобы получить больше, чем первые 10000 хитов). Могу ли я прокручивать и агрегировать данные? Ошибка apiapi, когда я запускаю ее с агрегацией.
В настоящее время у меня есть два решения, как кажется, не так уж велика:
запустить несколько запросов фильтра, скажем, 1 для каждого сегмента (а потом мне не нужно использовать агрегацию + top_hits команду). (слишком медленно для моего приложения)
Запустите 1 большой запрос фильтра и не суммируйте его, но используйте прокрутку api, чтобы получить все образы. Затем я поместил их в соответствующие ведра здесь, на моем хосте. (Хорошо, но кажется, что ES создан для объединения их в ведра для меня и имеет больше ресурсов, чтобы сделать эту работу)
Существуют ли более эффективные способы борьбы с этим?
Это кажется связано с этим: (Paging elasticsearch aggregation results), хотя прокрутки апи не упоминается (если это не то, что они означают пейджинга?)
У вас есть более 10 000 документов в каждом ведре? Или у вас есть более 10 000 ведер и вы хотите просмотреть эти ведра? – jay
Некоторые ведра имеют более 10 000 посещений. Прямо сейчас я смотрю ~ 500 ведер. Мои общие хиты похожи на 16 миллионов, – travelingbones