You can try removing the hyphen using a mapping char filter:
something like this would remove the hyphen:
{
"index" : {
"analysis" : {
"char_filter" : {
"my_mapping" : {
"type" : "mapping",
"mappings" : ["-=>"]
}
},
"analyzer" : {
"custom_with_char_filter" : {
"tokenizer" : "standard",
"char_filter" : ["my_mapping"]
}
}
}
}
}
it's something of a blunt force instrument as it will strip all hyphens but it should make "t-shirt" and "tshirt" match