Interesting approach. Several people have also pointed out to me that docker 1.13 adds a few dns and networking features that could be of help here. And I believe that on the ES side there also have been some improvements to the way the clustering deals with dns lookups. So altogether, it should be possible to use swarm now with ES now.
In general my concern with running ES on swarm still is dealing with day to day cluster management (node replacement, rolling upgrades, etc) where there is quite a bit of potential for ending up with corrupted nodes, network splits, etc. But things are moving the right direction.