У меня есть поток данных из базы данных, и я хочу использовать Java streams API для итерации и выбрать X
их количество и вывести его в другой поток. Порядок не имеет значения .
Что-то вроде
source
.collect(x -> collectNItems(10)) // basically from the stream choose 10 items
.flatmap(collectedItems -> Stream.of(collectedItems))
.map(x -> buildElasticSearchBatchInsertRequest(x))
.forEach(request -> insertToElasticSearch(request));
говорит, что источник 1,2,3,4,5,6,7,8,9,10,11,12,13,14
После flatMap я должен получить поток из
(12, 1, 14, 3)
(2, 4, 5 , 8, 7, 6, 10, 11, 9, 13)
(опять-таки порядок не имеет значения) Мне просто нужно, чтобы он был сгруппирован вместе.
Основным вариантом использования для этого было массовое вставление в Elasticsearch на основе данных базы данных, как единое целое. в то время как вставки выполняются медленно, а массовая вставка целиком занимает много памяти.