ElasticSearch Index: Type defaults to long instead of float

As you already said, the field is already mapped to a long in the existing index. This is likely due to having sent a first document where the automatic mapping rules detected the field value as being numeric, but not floating point. In this case the field is mapped as a long.

Mappings for existing fields cannot be changed for an index. I'd recommend creating a complete mapping and storing it in an index template before sending the first data document to an index.