Don't make so many fields. Personally I don't like dynamic mapping. I set "dynamic": false
which will store new fields but not index them. Then I can carefully decide which fields to add. Other folks with other use cases like "dynamic": "strict"
which will reject changes that add new fields.
The usual strategies for making fewer fields is to combine similar ones or to use key/value objects and nested fields. key/value objects with nested fields are much slower to query than regular fields, but they don't have the sparsity storage problems. I prefer to try and lay out the data not to have so many fields. But I don't know your use case so I can't really give you any hints on how to do that.