Flux skip take , filter sort .
.
@GetMapping("")
public Flux<Post> all(@RequestParam(value = "q", required = false) String q,
@RequestParam(value = "page", defaultValue = "0") long page,
@RequestParam(value = "size", defaultValue = "10") long size) {
return this.postRepository.findAll()
.filter(p -> Optional.ofNullable(q).map(key -> p.getTitle().contains(key) || p.getContent().contains(key)).orElse(true))
.sort(comparing(Post::getCreatedDate).reversed())
.skip(page * size).take(size);
}