I've tried now shifting gears and storing the location as a geo_shape. Store location as a geo_shape of circle with the correct radius. This seems to make the most sense, and might be more optimized for ES (but I'm not an expert by any means). Unfortunately, using the online documentation, i get a null pointer exception when trying to query the data.
Basically I changed the relation to a contains, because you are looking for a point that is contained within that shape. within and contains both mean; does the queried shape entirely exist within the indexed shape. But the former is for shapes, the latter for points.
You may want to consider looking at intersects as well.
I'll raise a GH issue to get the docs updated to make all this clearer too.