When should I use non-data nodes?

We currently have a design where Elasticsearch is located directly on the web server and are trying to separate this out. One idea was to build something like this:

http://www.asktoapps.com/scaling-and-optimization-of-elasticsearch-cluster-part-i/

It seems a bit overkill and was thinking of removing the non-data node layer completely. The web servers would use an ES client to query the data node cluster. Are their any shortcoming with this approach compared to having that extra non-data node layer?

Here are the 3 models:

1 - WWW/ES together | data ES
2 - WWW | non-data ES | data ES
3 - WWW | data ES

Thoughts/opinions?

Client nodes are handy for heavy query cases.
But it sounds like just using one of the client libraries will suit you.