I suspect you are seeing something similar to this
How the field is stored is different than how the field is represented in the source document I suspect you are looking at the source document and expecting it to change the type please read the response above and it may help clarify.
Elastic does not cast / correct the source document but it will convert if it can into the actual stored field /doc_value
So in your case if you set day=123 in the _source it looks like the integer you entered, but if you looked at the actual doc_value it would be a string.
And pretty much anything can be a string so it will almost always index a value as a string