Thanks for your answer cbuescher, I did find the article very helpful in understanding synonyms 
One thing that comes to my mind though, can't you predefine analyzers (rather than filters) that would use different synonym filters, and then refer to them at query time? Is there a downside of having a lot of different analyzers? there will be a lot of duplication but it can be generated at app level. smth like:
'slovenian_company_analyzer': {
'tokenizer': 'standard',
'filter': [
'lowercase',
'asciifolding',
'slovenian_company_synonyms',
]
},
'french_company_analyzer': {
'tokenizer': 'standard',
'filter': [
'lowercase',
'asciifolding',
'french_company_synonyms',
]
},
'english_company_analyzer': {
'tokenizer': 'standard',
'filter': [
'lowercase',
'asciifolding',
'english_company_synonyms',
]
}
And then at query time
{
"query": {
"bool": {
"should": [
{
"match": {
"name": {
"query": "apple",
"boost": 1.5,
"analyzer": "french_company_names":
}
}
},
{
"match": {
"name": "pear"
}
}
]
}
}
}