For starters, the GeoIP filter has had a "location" field for some time now. Your workaround to put lon/lat coordinates in is superfluous, including the "float" conversion.
See the docs in the code and the code that adds location for reference.
Aside from this, I can't see a reason why GeoIP should be causing you grief. You shouldn't need the "target =>" option, as that is already the default target, too. Have you looked to see if there's a mapping error in your Elasticsearch log file?