It sounds like you guys don't care about date types, or any type. I think that the best solution would be to define a dynamic template that will define all types as string:
{
"_default_" : {
"dynamic_templates" : [
{
"long_to_string" : {
"match" : "*",
"match_mapping_type": "long",
"mapping" : {
"type" : "string",
"index" : "analyzed"
}
}
},
{
"double_to_string" : {
"match" : "*",
"match_mapping_type": "double",
"mapping" : {
"type" : "string",
"index" : "analyzed"
}
}
},
{
"float_to_string" : {
"match" : "*",
"match_mapping_type": "float",
"mapping" : {
"type" : "string",
"index" : "analyzed"
}
}
},
{
"integer_to_string" : {
"match" : "*",
"match_mapping_type": "integer",
"mapping" : {
"type" : "string",
"index" : "analyzed"
}
}
},
{
"date_to_string" : {
"match" : "*",
"match_mapping_type": "date",
"mapping" : {
"type" : "string",
"index" : "analyzed"
}
}
},
{
"boolean_to_string" : {
"match" : "*",
"match_mapping_type": "boolean",
"mapping" : {
"type" : "string",
"index" : "analyzed"
}
}
}
]
}
}
From here.