Probably the best book available on the subject, which is a bit unfortunate. It wasn't awful or anything, but I found myself frequently stopping, reading the docs, and/or Googling in frustration because explanations and warnings simply prompted further questions that seemed obvious to me, but were not adequately explored. Not the easiest ecosystem to break into, admittedly, but I would still say this is probably the best organized intro available.
In particular, one of my largest criticisms (applies to the JVM ecosystem as a whole *way* more than most for some reason) is the amount of (IMO) unreasonable assumptions made. Terms are frequently thrown around without proper treatment. I actually got through the entire book without feeling like I had a complete understanding of what an operator was. The Flink glossary wasn't all that much more helpful, but at least had something. Do yourself a favor and read the Google Dataflow Model paper first and you'll get a *much* more thorough introduction to some of the crucial terms.
Finally, though no fault of the author, this book is old. Flink has evolved significantly since this was written, some of the APIs are deprecated, and some of the other cautions are either inaccurate or difficult to verify (I still can't figure out whether the limitation re: parallelism settings and savepoints is still valid... the book claims it was written for Flink 1.7, but the only limitations I can find in the official docs reference version 1.2).